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 目标的最终确定。
目标创建
创建的库类型可以使用 STATIC
、SHARED
、MODULE
、INTERFACE
或 OBJECT
等关键字显式指定,就像在 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. 在芬兰以及全球其他国家的商标。所有其他商标均为各自所有者所有。