Как кросс-компилировать приложения qt с CMake - PullRequest
1 голос
/ 03 октября 2019

Ситуация:

На хосте Linux имеется скомпилированное приложение qt для разных платформ: Linux, Windows, Android (скоро и Mac). Мне нужно собрать приложение для всех платформ на хосте Linux.

Я использовал qmake, и там все было очень просто, достаточно было вызвать qmake и передать ему -spec. Qmake сам написал необходимые пути к переменным, и все работало нормально.

Теперь я переключаюсь на CMake, и у меня возникают трудности с вызовом CMake. Как я могу создать приложение для конкретной платформы?

  • Есть ли у CMake возможность, аналогичная "spec" в qmake?

  • Или мне нужно вручную установить все переменные (я не смог реализовать такой метод)?

1 Ответ

1 голос
/ 03 октября 2019

CMake-эквивалент опции qmake -spec - это, по сути, -G (для "генератора") командной строки опция . Это скажет CMake, какой генератор использовать. Генератор CMake отвечает за генерацию собственных файлов системы сборки (например, файлов Makefile Unix, файлов проекта Visual Studio и т. Д.), Поэтому он зависит от платформы. Например,

cmake -G "Unix Makefiles" ..

В отличие от qmake, где вы указываете путь к информации о платформе / компиляторе, вы можете напрямую указать CMake, какой генератор выбрать из списка поддерживаемых генераторов. CMake документация удобно разбивает список поддерживаемых генераторов на группы командной строки и IDE . Если вы явно не выберете генератор, CMake будет использовать генератор по умолчанию на основе текущей платформы.

CMake также предоставляет дополнительные опции (которые можно использовать вместе с -G), чтобы дополнительно указать, какой набор инструментов (-T) или платформа (-A) для использования с сгенерированной системой сборки. Спецификации набора инструментов и платформы могут указывать системе сборки, какой определенный компилятор или SDK выбрать. Например, мы можем сказать CMake подготовить среду сборки для приложения на платформе Win32 (архитектура) с Visual Studio 2019, используя это:

cmake -G "Visual Studio 16 2019" -A Win32 ..

или мы можем изменить архитектуру на 64-битнуюуказав это вместо этого:

cmake -G "Visual Studio 16 2019" -A x64 ..

Я рекомендую вам прочитать связанную документацию, чтобы понять, как вы можете управлять настройками системы сборки и компилятора CMake.

...