cmake变量:PRIVATE PUBLIC INTERFACE

该三个变量多用于target_include_directories,target_link_libraries中,用于指明链接内容的使用规则,以头文件为例。

具体规则如下:

bash 复制代码
add_library(MathFunction mysqrt.cpp)

target_include_directories(MathFunction INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}")
 
# 规则
# PUBLICE: 编译的本目标库需要,依赖该目标库的其他目标也需要
# INTERFACE: 编译本目标库不需要头文件,依赖该目标库的其他目标需要
# PRIVATE: 编译的本目标库需要,依赖该目标库的其他目标不需要


# 另一个CMakeLists.txt

add_executable(demo demo.cpp)
target_link_libraries(demo PUBLIC MathFunction)

# 无需再包含MathFunction路径下的头文件
# target_include_directories(demo PUBLIC "${CMAKE_SOURCE_DIR}/MathFunction")
相关推荐
Je1lyfish13 小时前
CMU15-445 (2025 Fall/2026 Spring) Project#3 - QueryExecution
linux·c语言·开发语言·数据结构·数据库·c++·算法
Brilliantwxx14 小时前
【C++】 vector(代码实现+坑点讲解)
开发语言·c++·笔记·算法
叼烟扛炮15 小时前
C++第三讲:类和对象(中)
开发语言·c++·类和对象
KuaCpp15 小时前
C++新特性学习
c++·学习
墨染千千秋15 小时前
C/C++ Keywords
c语言·c++
ximu_polaris15 小时前
设计模式(C++)-行为型模式-中介者模式
c++·设计模式·中介者模式
CSCN新手听安17 小时前
【Qt】Qt窗口(八)QFontDialog字体对话框,QInputDialog输入对话框的使用,小结
开发语言·c++·qt
tumu_C17 小时前
用std::function减缓C++模板代码膨胀和编译压力的一个场景
开发语言·c++
Hical6118 小时前
C++17 实战心得:那些真正改变我写代码方式的特性
c++
Hical6119 小时前
实测:C++20 协程 vs Go Gin vs Rust Actix,谁的 Web 性能更强?
c++