PHIL / NOTES
← 返回笔记目录
C++ 开发与语法

用 CMake target 管理头文件和依赖

理解 PRIVATE、PUBLIC 和 INTERFACE 的传播方向。

原理

构建库时把头文件路径、编译特性和链接依赖挂到 target 上。这样同一项目中的测试、工具和应用可以分别声明自己依赖的库。

开发中的做法

若依赖只出现在库的实现文件里,通常用 PRIVATE。公开头文件暴露依赖的类型时,消费者也需要该依赖,通常用 PUBLIC。纯头文件库可用 INTERFACE 描述消费者需要的设置。

验证与追问

验证传播关系最简单的方式是创建一个小消费者,只链接目标库并包含公开头文件。如果消费者还得手动补 include 路径,就检查库的接口声明。

代码片段

add_library(core STATIC core.cpp)
target_compile_features(core PUBLIC cxx_std_20)
target_include_directories(core PUBLIC include)
add_executable(app main.cpp)
target_link_libraries(app PRIVATE core)