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")
相关推荐
虾球xz7 分钟前
CppCon 2015 学习:C++ devirtualization in clang
开发语言·c++·学习
呆呆的小鳄鱼18 分钟前
IO之详解cin(c++IO关键理解)
linux·c语言·c++
看到我,请让我去学习38 分钟前
C++核心编程(动态类型转换,STL,Lanmda)
c语言·开发语言·c++·stl
羚羊角uou1 小时前
【C++】模拟实现map和set
java·前端·c++
泽02021 小时前
C++之模板进阶
开发语言·c++·算法
byte轻骑兵3 小时前
【C++特殊工具与技术】优化内存分配(五):显式析构函数的调用
开发语言·c++
谷雨不太卷4 小时前
AVL树的实现
数据结构·c++·算法
别来无恙1496 小时前
岛屿周长问题的三种解法:直接计数法、数学计算法与深度优先搜索
java·c++·算法·深度优先·dfs
周振超的7 小时前
c++编译第三方项目报错# pragma warning( disable: 4273)
开发语言·c++
愚润求学11 小时前
【递归、搜索与回溯】FloodFill算法(一)
c++·算法·leetcode