qt_standard_project_setup
设置项目级别的默认值到一个标准的安排。
此命令在Qt6包的Core
组件中定义,可以按如下方式加载
find_package(Qt6 REQUIRED COMPONENTS Core)
此命令在Qt 6.3中引入。
概要
qt_standard_project_setup( [REQUIRES <version>] [SUPPORTS_UP_TO <version>] [I18N_TRANSLATED_LANGUAGES <language...>] [I18N_SOURCE_LANGUAGE <language>] )
如果versionless commands
被禁用,请使用qt6_standard_project_setup()
代替。它支持与该命令相同的参数集。
说明
此命令简化了设置典型Qt应用程序的任务。它通常在第一个find_package(Qt6)
调用之后立即调用,通常在顶级的CMakeLists.txt
文件中,并且在定义任何目标之前。它执行以下操作
- 如果
CMAKE_AUTOMOC
和CMAKE_AUTOUIC
变量尚未定义,则将标准CMake变量设置为true。默认情况下,这将为当前目录范围及其以下创建的所有后续目标启用所有与Qt相关的自动生成功能。 - 自动包含CMake的
GNUInstallDirs
模块。它为CMAKE_INSTALL_BINDIR
、CMAKE_INSTALL_LIBDIR
等变量定义合适的默认值。 - 当针对Windows时,如果
CMAKE_RUNTIME_OUTPUT_DIRECTORY
变量尚未设置,它将被设置为${CMAKE_CURRENT_BINARY_DIR}
。 - 当针对Apple或Windows以外的平台时,
CMAKE_INSTALL_RPATH
将增加如下所述。 - CMake的
USE_FOLDERS
属性被设置为ON
,并且QT_TARGETS_FOLDER
被设置为QtInternalTargets
。支持文件夹的IDE将在该文件夹中显示Qt内部目标。
自Qt 6.5以来,可以通过选择接受更新Qt版本的变化来更改Qt的CMake API的默认行为。如果指定了REQUIRES
,则启用Qt中引入的所有建议更改,使用较旧的Qt版本将导致错误。如果还指定了SUPPORTS_UP_TO
,则也启用直到SUPPORTS_UP_TO
版本中引入的任何新更改(但使用较旧的Qt版本不是错误)。这与CMake的策略概念类似(比较cmake_policy
)。
在支持 RPATH
功能(除苹果平台外)的平台上,此命令会将两个值附加到 CMAKE_INSTALL_RPATH
变量中。将 $ORIGIN
附加进去,以便库在它们自己的目录中找到它们所依赖的其他库。$ORIGIN/<reldir>
也被添加进去,其中 <reldir>
是从 CMAKE_INSTALL_BINDIR
到 CMAKE_INSTALL_LIBDIR
的相对路径。这允许安装到 CMAKE_INSTALL_BINDIR
的可执行文件找到它们可能依赖安装到 CMAKE_INSTALL_LIBDIR
的任何库。在 CMAKE_INSTALL_RPATH
中移除任何重复的项。在实践中,这两个值确保可执行文件和库能够找到它们的链接时依赖项,假设项目将它们安装到 install(TARGETS) 命令使用的默认位置(没有明确提供目标时)。
要禁用 IDE 对文件夹的支持,在调用 qt_standard_project_setup
之前或之后将 USE_FOLDERS 设置为 OFF
。
通过将 QT_NO_STANDARD_PROJECT_SETUP 变量设置为 true,可以有效地禁用 qt_standard_project_setup()
命令。
国际化
从 Qt 6.7 开始,可以使用 I18N_TRANSLATED_LANGUAGES
参数指定用于项目国际化的语言。有关详细信息,请参阅QT_I18N_TRANSLATED_LANGUAGES。
使用 I18N_SOURCE_LANGUAGE
来指定可翻译字符串所使用的语言。默认情况下,使用 en
。有关详细信息,请参阅QT_I18N_SOURCE_LANGUAGE。
示例
cmake_minimum_required(VERSION 3.16...3.22) project(MyThings) find_package(Qt6 REQUIRED COMPONENTS Core) qt_standard_project_setup() qt_add_executable(MyApp main.cpp) install(TARGETS MyApp BUNDLE DESTINATION . RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ) qt_generate_deploy_app_script( TARGET MyApp OUTPUT_SCRIPT deploy_script NO_UNSUPPORTED_PLATFORM_ERROR ) install(SCRIPT ${deploy_script})
另请参阅 qt_generate_deploy_app_script()、qt_policy 和 qt_add_translations()。
© 2024 Qt公司有限公司。此处包含的文档贡献归各自所有者所有。本手册提供的文档根据 Free Software Foundation 发布的 GNU 自由文档许可协议版本 1.3 的条款提供许可。Qt 及其相应标志是芬兰及其它国家/地区 Qt公司有限公司的商标。所有其他商标归各自所有者所有。