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 CMake策略选择加入较新 Qt 版本的行为变化,从而更改 Qt CMake API 的默认行为。这类似于 CMake 自己的策略概念(比较cmake_policy)。如果指定了REQUIRES ,那么在REQUIRES 及之前的 Qt 版本中引入的所有策略都会自动设置为NEW ,使用较旧的 Qt 版本将导致错误。例如,指定REQUIRES 6.8 会启用 QTP0001 至 QTP0005 策略。如果还指定了SUPPORTS_UP_TO ,则也会启用该版本以下的策略,但不要求存在该特定 Qt 版本。
以下策略可用:
Qt Qml 模块的默认资源前缀是":/qt/qml/"。 | |
指定 Android 特定路径的目标属性可能包含生成器表达式。 | |
创建 Qt 库时要考虑 BUILD_SHARED_LIBS 值。 | |
QML 模块中包含 QML 文件的额外目录需要额外的 qmldir 文件 | |
Qt_add_qml_module 依赖关键字接受 CMake 目标 |
有关手动设置个别策略的详情,请参阅qt_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()。
© 2026 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.