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 起,qt_add_library()
命令只有在明确设置了BUILD_SHARED_LIBS
变量,且QTP0003设置为NEW
的情况下,才会在决定库类型时考虑 。
所提供的任何sources
都将传递给add_library()
的内部调用。
最终确定
创建目标后,可能需要进一步处理或最终确定步骤。最终处理由qt_finalize_target()命令完成。
最终处理可以作为该调用的一部分进行,也可以推迟到该命令返回后的某个时间进行(但仍应在同一目录范围内)。使用 CMake 3.19 或更高版本时,最终处理会自动推迟到当前目录作用域的末尾。这样,调用者就有机会在最终完成之前修改已创建目标的属性。使用早于 3.19 版本的 CMake 时,不支持自动延迟。在这种情况下,将在此命令返回前立即执行最终化。
无论 CMake 版本如何,都可以使用MANUAL_FINALIZATION
关键字来表示您将在稍后的某个时间明确调用qt_finalize_target()。一般来说,除非项目必须支持 CMake 3.18 或更早版本,否则不需要MANUAL_FINALIZATION
。
© 2025 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.