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")
相关推荐
雾岛听蓝1 小时前
C++ 类和对象(一):从概念到实践,吃透类的核心基础
开发语言·c++·经验分享·笔记
Dream it possible!2 小时前
LeetCode 面试经典 150_图_克隆图(90_133_C++_中等)(深度优先:DFS)
c++·leetcode·面试·
鸭子程序员2 小时前
c++ 算法
开发语言·c++·算法
不会c嘎嘎3 小时前
算法百练,直击OFFER -- day5
c++·算法
序属秋秋秋3 小时前
《Linux系统编程之进程环境》【环境变量】
linux·运维·服务器·c语言·c++·操作系统·系统编程
乌萨奇也要立志学C++3 小时前
【洛谷】二分查找专题 告别二分死循环!模板 + 细节 + 实战
c++·算法
Rock_yzh3 小时前
LeetCode算法刷题——128. 最长连续序列
数据结构·c++·算法·哈希算法
wheeldown4 小时前
【Rokid+CXR-M】基于Rokid CXR-M SDK的博物馆AR导览系统开发全解析
c++·人工智能·ar
利刃大大4 小时前
【c++中间件】语音识别SDK && 二次封装
开发语言·c++·中间件·语音识别
晨非辰4 小时前
C++ 波澜壮阔 40 年:从基础I/O到函数重载与引用的完整构建
运维·c++·人工智能·后端·python·深度学习·c++40周年