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_AUTOMOCCMAKE_AUTOUIC变量尚未定义,则将标准CMake变量设置为true。默认情况下,这将为当前目录范围及其以下创建的所有后续目标启用所有与Qt相关的自动生成功能。
  • 自动包含CMake的GNUInstallDirs模块。它为CMAKE_INSTALL_BINDIRCMAKE_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_BINDIRCMAKE_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_policyqt_add_translations()

© 2024 Qt公司有限公司。此处包含的文档贡献归各自所有者所有。本手册提供的文档根据 Free Software Foundation 发布的 GNU 自由文档许可协议版本 1.3 的条款提供许可。Qt 及其相应标志是芬兰及其它国家/地区 Qt公司有限公司的商标。所有其他商标归各自所有者所有。