qt_add_library

创建并最终确定一个库。

此命令在 Qt6 软件包的 Core 组件中定义,可以像这样加载:

find_package(Qt6 REQUIRED COMPONENTS Core)

此命令是在 Qt 6.2 中引入的。

摘要

qt_add_library(target
    [STATIC | SHARED | MODULE | INTERFACE | OBJECT]
    [MANUAL_FINALIZATION]
    sources...
)

如果未启用 无版本命令,则使用 qt6_add_library() 代替。它支持与此命令相同的参数集。

描述

qt_add_library() 是 CMake 内置的 add_library() 命令的包装。它执行以下任务:

  • 创建一个适当库类型的 CMake 目标。
  • 处理 CMake 目标的最终确定。

目标创建

创建的库类型可以使用 STATICSHAREDMODULEINTERFACEOBJECT 等关键字显式指定,就像在 add_library() 中一样。如果没有给出这些关键字,则创建的库类型取决于 Qt 的构建方式。如果 Qt 是静态构建的,则创建静态库。否则,将创建共享库。请注意,这与 CMake 的 add_library() 命令不同,其中 BUILD_SHARED_LIBS 变量控制要创建的库类型。从 6.7 版本开始,当 BUILD_SHARED_LIBS 变量明确设置并且 QTP0003 设置为 NEW 时,qt_add_library() 命令在决定库类型时才会考虑 BUILD_SHARED_LIBS

提供的任何 sources 都将传递给内部对 add_library() 的调用。

最终确定

创建目标后,可能需要进一步处理或 最终确定 步骤。最终化处理由 qt_finalize_target() 命令实现。

最终化可以在此调用中进行,也可以推迟到此命令返回之后(但仍然应在同一目录范围内)。当使用 CMake 3.19 或更高版本时,最终化会自动推迟到当前目录范围的末尾。这允许调用者在最终确定之前修改已创建目标的属性。当使用早于 3.19 的 CMake 版本时,不支持自动推迟。在这种情况下,最终化会在此命令返回之前立即执行。

无论 CMake 版本如何,都可以提供 MANUAL_FINALIZATION 关键字以指示您将显式调用 qt_finalize_target(),而不是在以后的某个时间。通常,除非项目必须支持 CMake 3.18 或更早版本,否则不需要 MANUAL_FINALIZATION

另请参阅 qt_finalize_target() 函数,qt_add_executable() 函数,以及 QTP0003

© 2024 The Qt Company Ltd. 本文档中的文档贡献归各自所有者所有版权。本提供的文档根据自由软件基金会发布的 GNU 自由文档许可协议版本 1.3 条款许可。Qt 及相关标志是 The Qt Company Ltd. 在芬兰以及全球其他国家的商标。所有其他商标均为各自所有者所有。