qt_add_executable
Создаёт и завершает целевой объект приложения заданного типа, специфичного для платформы.
Команда определена в компоненте Core пакета Qt6. Загрузите пакет с помощью:
find_package(Qt6 COMPONENTS Core REQUIRED)
Краткое описание
qt_add_executable(target
[WIN32] [MACOSX_BUNDLE]
[MANUAL_FINALIZATION]
sources...) Если беспривязные команды отключены, используйте qt6_add_executable() вместо. Она поддерживает тот же набор аргументов, что и данная команда.
Описание
Данная команда выполняет следующие задачи:
- Создаёт целевой объект 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_target().
Завершение может произойти либо как часть этого вызова, либо быть отложено на какой-то момент после возврата этой команды (но оно должно всё ещё находиться в области действия текущего каталога). При использовании CMake 3.19 или более поздней версии завершение автоматически откладывается до конца текущей области действия каталога. Это даёт вызывающей стороне возможность изменить свойства созданного целевого объекта перед его завершением. При использовании версий CMake, более ранних чем 3.19, автоматическое отложение не поддерживается. В этом случае завершение выполняется непосредственно перед возвратом этой команды.
Независимо от версии CMake, ключевое слово MANUAL_FINALIZATION может быть указано, чтобы указать, что вы будете явно вызывать qt_finalize_target() самостоятельно в какой-то момент позже. В общем случае, 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_target(complexapp)
См. также qt_finalize_target(), qt_set_finalizer_mode() и qt_add_library().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qt-add-executable.html