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 目标的最终清理工作。
目标创建
可以像在add_library() 中那样,通过STATIC 、SHARED 、MODULE 、INTERFACE 或OBJECT 等关键字之一显式指定要创建的库类型。如果未指定这些关键字中的任何一个,则创建的库类型取决于Qt的构建方式。如果Qt是静态构建的,则会创建静态库;否则,将创建共享库。 请注意,这与 CMake 的add_library() 命令的工作方式不同,在后者中,BUILD_SHARED_LIBS 变量控制着生成的库类型。自 6.7 版本起,qt_add_library() 命令仅在 变量被显式设置且QTP0003被设置为NEW 时,才会考虑BUILD_SHARED_LIBS 来决定库类型。
提供的任何sources 参数都将被传递给内部调用的add_library() 函数。
终结处理
目标创建后,可能需要进行进一步的处理或终结步骤。终结处理由qt_finalize_target()命令实现。
最终化处理既可以作为此调用的组成部分立即执行,也可以推迟到该命令返回后的某个时间点(但仍应在同一目录作用域内)。使用 CMake 3.19 或更高版本时,最终化处理会自动推迟到当前目录作用域结束时执行。 这使调用方有机会在目标最终化之前修改其属性。使用 CMake 3.19 之前的版本时,不支持自动延迟。在这种情况下,最终化将在该命令返回之前立即执行。
无论使用哪个版本的 CMake,都可以指定MANUAL_FINALIZATION 关键字,以表明您将在稍后时间自行显式调用qt_finalize_target()。通常情况下,除非项目必须支持 CMake 3.18 或更早版本,否则不应需要使用MANUAL_FINALIZATION 。
© 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.