LINUX.ORG.RU

Кросс-компиляция Qt 5.7.1

 , ,


0

1

Собственно Qt накатил, накатил компиляторы и отладчики, но вопрос остается в qmake, который мог бы подойти под к профилям в Qt Creator.

Скомпилированные библиотеки есть static и shared - собирал под виндой. Под линуксом, по найденным в сети инструкциям ничего не собирается для кросс-компиляции.

MXE не предлагать, мне нужна интеграция в Qt Creator, а не компиляция из терминала.

★★★★★

но вопрос остается в qmake, который мог бы подойти под к профилям в Qt Creator.

Не понял. qmake у каждой сборки qt свой. Выбирайте нужный и вперёд.

RazrFalcon ★★★★★
()

Под линуксом, по найденным в сети инструкциям ничего не собирается для кросс-компиляции.

Враньё, я сам собирал статические Qt 4 и Qt 5 под серверной Абантой 16.04 с помощью mingw-w64 под MS Windows. Всё прекрасно работало.

EXL ★★★★★
()
Ответ на: комментарий от SR_team

Я собирал mxe из исходников, но думаю эта инструкция подойдёт и для варианта из реп, только пути к файлам изменятся.

Вот несколько картинок, надеюсь поможет(специально создал комплект Mingw 4.9.3, так что инструкция должна быть рабочей):

1) добавляем компиляторы: https://i.imgur.com/KoS7Up0.png

Можно только для C++, можно для C и С++ (обрати внимание на win32-g++, возможно его нужно изменить если будешь использовать другой компилятор)

Как изменить:

Открываешь папку mxe/usr/x86_64-w64-mingw32.shared/qt5/mkspecs/ Теперь либо создаёшь копию папки win32-g++ либо просто открываешь файл mxe/usr/x86_64-w64-mingw32.shared/qt5/mkspecs/win32-g++/qmake.conf

Там меняешь QMAKE_CC QMAKE_CXX QMAKE_LINK QMAKE_LINK_C на требуемый компилятор. Лично у меня две папки стандартная win32-g++ и win32-g++-5 в которой я поменял С++ компилятор на x86_64-w64-mingw32-g++-posix, С компилятор на x86_64-w64-mingw32-gcc-5.3-posix (стандартные mingw компиляторы в Linux Mint 18)

2) Добавляем отладчик

https://i.imgur.com/JZz5Act.png

3) Добавляем профиль Qt:

https://i.imgur.com/UocLl5W.png

просто ищем qmake файл, он сам подхватится

4) Создаём комплект Qt:

https://i.imgur.com/jIUMJPS.png

В Qt mkspec указываем либо win32-g++ либо название папки если в которой находится правильный qmake.conf, если в шаге 1 создавал дополнительные конфиги для других компиляторов (у меня в MinGW 5.3.1 эта строка равна: win32-g++-5

5) Создаём новый проект и выбираем наш MinGW набор, можно только его выбрать, можно в дополнение к Linux набору

https://i.imgur.com/CygtO55.png

6) На данном шаге если нажать на молоточек то проект уже соберётся, но не будет выполняться при нажатии на зеленую стрелочку.

https://i.imgur.com/uX1UNV2.png

https://i.imgur.com/CCq8cv6.png

https://i.imgur.com/B4YsXbC.png

При нажатии на зеленую стрелочку:

https://i.imgur.com/8tQWr6c.png

7) Если нужно добавить выполнение по нажатию на зеленую стрелочку то можно сделать так:

Добавить необходимые dll в папку с .exe файлом или в префикс wine/drive_c/windows/system32 (в зависимости от того нужна поддержка одной или нескольких версии g++/Qt)

Если не добавил или добавил не туда то будет подобная ошибка: https://i.imgur.com/OUBoa2R.png

Нажать на проекты -> запуск -> добавить -> особая программа

И там wine и путь до бинарника

https://i.imgur.com/yM2TeWr.png

Тогда при нажатии на зеленую кнопку будет запускаться программа в wine(графические тоже)

https://i.imgur.com/JFl8m66.png

P.S. При такой настройки отладчик остаётся нерабочим, но так как он мне не нужен я не углублялся в дальнейшую настройку mxe в Qt Creator'е.

fsb4000 ★★★★★
()

мне нужна интеграция в Qt Creator, а не компиляция из терминала.

А смысл? Разве нельзя писать и отлаживать программу в Qt Creator с линуксовым Qt, а вендосборки делать именно из терминала?

MXE не использовал, но обычно нет проблемы сделать какую-то спецсборку своего софта через qmake/make. Это даже может оказаться удобнее в плане автоматизации.

hobbit ★★★★★
()
Ответ на: комментарий от fsb4000

Спасибо, ваша инструкция мне очень помогла! Дайте что-ли номер своего кошелька, кину пару монет в знак благодарности.

SR_team ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.