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")
相关推荐
王老师青少年编程13 小时前
2025年12月GESP真题及题解(C++七级): 学习小组
c++·gesp·csp·信奥赛·七级·csp-s·提高组
迷途之人不知返13 小时前
C++初识(2)
c++
澄澈青空~14 小时前
接续:DKOM 进程隐藏的原理
c++·安全
一眼万里*e14 小时前
如何快速学懂开源地面站
c++
m0_7482500314 小时前
C++ 预处理器
开发语言·c++
爱装代码的小瓶子14 小时前
【c++进阶】c++11下类的新变化以及Lambda函数和封装器
java·开发语言·c++
m0_7482500315 小时前
C++ 标准库概述
开发语言·c++
恒者走天下15 小时前
c++ cpp项目面经分享
c++
烟锁池塘柳015 小时前
C++程序脱离环境运行:详解OpenCV动态库依赖部署 (Deployment)
c++·opencv·webpack
被制作时长两年半的个人练习生15 小时前
首尾元素相同的间隔循环策略
c++·笔记·循环·ptx