Простой способ кросс-компиляции приложения Qt с помощью Qt Creator?

#c #qt #cross-platform #qt-creator

#c #qt #кроссплатформенность #qt-creator

Вопрос:

Я совсем новичок в C и Qt Creator, я использую Qt Creator в Mac OS X. Существует ли простой способ компиляции также для платформ Windows и Linux? В настоящее время я копирую исходный файл на компьютер с Windows (с Qt) и компилирую его, что занимает много времени.

Есть ли команда или что-то еще, что может получить все 3 исполняемых файла одновременно?

Ответ №1:

Он не поддерживается «из коробки», и в конечном итоге вы можете перепутать разные варианты

Я настоятельно рекомендую для такой цели:

 - to use either centralised (svn) or distributed (git, hg) SCM
- to use continuus integration with 3 agents, each one in a different platform (can be VM or physical computer).  You can use hudson or cruise control
  

Этот способ:

 - you develop locally, on whatever platform you prefer
- you push / commit / submit your changes
- the buildbox compiles on all platforms (while you can still work on the next feature)
- ideally, you run your unit tests as well
- once all builds on all platforms are finished, you got a status and a build on all targets
  

Это довольно полезно, когда требуется иметь дело с несколькими версиями Qt или компилятора: возвращаемое значение определенно стоит времени, затраченного на настройку (и оно хорошо масштабируется)

Ответ №2:

Это далеко не тривиально, и Trolltech идея не понравилась (из-за того, что она стала сложнее, чем должна быть).

В Интернете есть программа кросс-компиляции приложений Qt / Win для Linux, которая поможет (только каталоги могут отличаться для Mac, команды должны быть одинаковыми).

После кросс-компиляции вам нужно будет создать ярлык для Qt Creator с пользовательским путем, к которому добавляется ваш каталог кросс-компилятора после остальной части ПУТИ. Таким образом, вы можете убедиться, что оно используется. Однако это не рекомендуется.

Почему бы просто не использовать правильно настроенную виртуальную машину?

Комментарии:

1. Я буду это делать, мне просто нужно простое решение. Думаю, пришло время VMware.

2. Ваш vmware не избавит вас от необходимости копировать файлы: по крайней мере, если вы используете SCM, вы можете исправить в виртуальной машине и отправить изменения в репозиторий, в противном случае трудно отслеживать и согласовывать изменения.

3. @Bruce: В Virtualbox есть функция «общие папки» (и я уверен, что VMware и др. сделайте тоже самое). Вы можете сделать исходную папку общедоступной и работать с точно такими же файлами без копирования или чего-либо еще.

4. Верно. Вам просто нужно убедиться, что у вас нет проблемы с окончанием строки и что вы строите в другом дереве, но это может сработать (хотя вы теряете другие преимущества SCM 🙂 )

5. @Bruce: ах да, n vs nr . С этим можно справиться, используя правильный текстовый редактор (notepad ftw или, черт возьми, даже Visual Studio можно настроить правильно в этом отношении, я думаю)