传递使用要求 (Transitive Usage Requirements)
Target的使用要求可以传递到依赖项. target_link_libraries()
命令有 PRIVATE
、INTERFACE
和 PUBLIC
关键字来控制传递.
当创建动态库时,
- 若源文件(例如cpp)中包含第三方头文件,而头文件(例如hpp)中不包含该第三方文件头,采用
PRIVATE
。 - 若源文件和头文件中都包含该第三方文件头,采用
PUBLIC
。 - 若头文件中包含该第三方文件头,而源文件(例如cpp)中不包含,采用
INTERFACE
。