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>] )
如果禁用了无版本命令,请使用qt6_standard_project_setup()
代替。它支持与此命令相同的参数集。
说明
该命令简化了典型 Qt 应用程序的设置任务。它通常会在第一次调用find_package(Qt6)
后立即调用,通常是在顶级CMakeLists.txt
文件中,并且在定义任何目标之前。如果稍后调用,它将不适用于之前定义的任何目标,可能会造成混乱。它的作用如下:
- 如果尚未定义 CMake 标准变量
CMAKE_AUTOMOC
和CMAKE_AUTOUIC
,则将其设置为 true。这将默认启用所有与 Qt 相关的 autogen 功能,适用于在当前目录范围及以下创建的后续目标。 - 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
。支持文件夹的集成开发环境将在此文件夹中显示 Qt-internal 目标。
自 Qt 6.5 起,可以通过选择较新 Qt 版本的更改来更改 Qt CMake API 的默认行为。如果指定了REQUIRES
,则会启用 Qt 在REQUIRES
之前引入的所有建议修改,使用旧版本的 Qt 会导致错误。如果另外指定了SUPPORTS_UP_TO
,则在SUPPORTS_UP_TO
之前的版本中引入的任何新修改也会启用(但使用较旧的 Qt 版本不会出错)。这与 CMake 的策略概念类似(比较cmake_policy)。
在支持RPATH
的平台上(Apple 平台除外),这条命令会在CMAKE_INSTALL_RPATH
变量中追加两个值。追加$ORIGIN
是为了让库能在与自己相同的目录中找到它们依赖的其他库。还追加了$ORIGIN/<reldir>
,其中<reldir>
是CMAKE_INSTALL_BINDIR
到CMAKE_INSTALL_LIBDIR
的相对路径。这使得安装到CMAKE_INSTALL_BINDIR
的可执行文件能找到它们可能依赖的安装到CMAKE_INSTALL_LIBDIR
的任何库。CMAKE_INSTALL_RPATH
中的任何重复内容都会被删除。在实践中,假设项目将可执行文件和库安装到install(TARGETS)命令在未明确提供目标位置时使用的默认位置,这两个值可确保可执行文件和库在链接时找到它们的依赖关系。
要禁用集成开发环境的文件夹支持,可在调用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()。
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.