qt_add_executable
Примечание: Эта команда находится в стадии технологического предварительного просмотра и может быть изменена в будущих выпусках.
Резюме
qt_add_executable(target
[WIN32] [MACOSX_BUNDLE]
[MANUAL_FINALIZATION]
sources...)
qt6_add_executable(target
[WIN32] [MACOSX_BUNDLE]
[MANUAL_FINALIZATION]
sources...) Описание
Данная команда выполняет следующие задачи:
- Создаёт целевой объект CMake соответствующего типа для целевой платформы.
- Связывает целевой объект с библиотекой
Qt::Core. - Обрабатывает завершение процесса создания целевого объекта CMake.
Создание целевого объекта
На всех платформах, кроме Android, будет создан целевой объект типа исполняемого файла. Все аргументы будут переданы стандартной команде CMake add_executable(), за исключением MANUAL_FINALIZATION (если он указан). На Android будет создана библиотека MODULE, и любые параметры WIN32 или MACOSX_BUNDLE будут проигнорированы. Некоторые свойства целевого объекта также будут установлены для Android:
- Свойство целевого объекта
SUFFIXбудет установлено для добавления архитектурно-специфического суффикса к имени файла библиотеки. - Различные свойства целевого объекта
<lang>_VISIBILITY_PRESETбудут установлены в значениеdefaultдля обеспечения видимости функцииmain()в результирующем двоичном файле.
Связывание с Qt::Core
Поскольку все приложения Qt должны быть связаны с библиотекой Qt::Core, это делается для удобства.
Завершение
После создания целевого объекта часто необходимы дополнительные этапы обработки или завершения. Шаги зависят от платформы и различных свойств целевого объекта. Обработка завершения реализована командой qt_finalize_executable().
Завершение может произойти либо как часть этого вызова, либо быть отложено на какое-то время после возвращения этой команды (но оно должно оставаться в рамках текущей директории). При использовании CMake 3.19 или более поздней версии завершение автоматически откладывается до конца текущей области директории. Это даёт вызывающей стороне возможность изменить свойства созданного целевого объекта перед его завершением. При использовании версий CMake, более ранних чем 3.19, автоматическое откладывание не поддерживается. В этом случае завершение выполняется сразу перед возвращением данной команды.
Независимо от версии CMake, ключевое слово MANUAL_FINALIZATION может быть указано, чтобы указать, что вы явным образом вызовете qt_finalize_executable() самостоятельно в какое-то более позднее время. Как правило, MANUAL_FINALIZATION не требуется, если проект должен поддерживать CMake 3.18 или более ранние версии.
Примеры
В следующем простом случае завершение обрабатывается автоматически. Если используется версия CMake, более ранняя чем 3.19, завершение будет выполнено немедленно как часть вызова. При использовании CMake 3.19 или более поздней версии завершение произойдёт в конце текущей области директории.
qt_add_executable(simpleapp main.cpp)
Следующий пример демонстрирует сценарий, когда завершение должно быть отложено. Свойство целевого объекта OUTPUT_NAME влияет на параметры развертывания на Android, но эти параметры записываются в ходе завершения целевого объекта. Для поддержки использования версий CMake, более ранних чем 3.19, мы берём на себя ответственность за завершение целевого объекта, добавив ключевое слово MANUAL_FINALIZATION.
qt_add_executable(complexapp MANUAL_FINALIZATION complex.cpp) set_target_properties(complexapp PROPERTIES OUTPUT_NAME Complexify) qt_finalize_executable(complexapp)
См. также qt_finalize_executable().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.1/qt-add-executable.html