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")
相关推荐
夜悊34 分钟前
C++代码示例:进制数简单生成工具
c++
郝学胜_神的一滴2 小时前
CMake 021: IF 条件判据详诠
c++·cmake
_wyt00116 小时前
洛谷 B3930 [GESP202312 五级] 烹饪问题 题解
c++·gesp
玖玥拾19 小时前
C/C++ 数据结构(七)栈、容器适配器
c语言·数据结构·c++··容器适配器
один but you21 小时前
constexpr函数
c++
凡人叶枫21 小时前
Effective C++ 条款41:了解隐式接口和编译期多态
java·开发语言·c++·effective c++
凡人叶枫21 小时前
Effective C++ 条款42:了解 typename 的双重意义
java·linux·服务器·c++
小胖xiaopangss21 小时前
BRpc使用
c++·rpc
-森屿安年-1 天前
63. 不同路径 II
c++·算法·动态规划
chase_my_dream1 天前
Cartographer详细讲解
c++·人工智能·自动驾驶