应该怎么理解CMakeLists.txt中一些指令的INTERFACE、PUBLIC和PRIVATE参数

我们在写CMakeLists.txt时经常会遇到一些指令带有INTERFACE|PUBLIC|PRIVATE参数,比如target_include_directories()指令,比如target_link_libraries()指令,等等。

那这些指令中的INTERFACE|PUBLIC|PRIVATE参数到底代表了什么呢,其实这些参数在这些不同指令中的含义都类似,也很好理解:

  • INTERFACE:表示当前目标不需要但是依赖当前目标的目标需要的资源(这个资源包括但不限于头文件)。
  • PUBLIC表示当前目标和依赖当前目标的目标都需要的资源。
  • PRIVATE表示当前目标需要但是依赖当前目标的目标不需要的资源,这些资源也不应该暴露给依赖当前目标的目标。

在使用cmake构建时会根据使用了哪个参数来对这些资源进行控制。

相关推荐
cape_NO_71 天前
10分钟学习CMake ①
cmake
gcfer1 天前
C/C++八股文知识积累5—项目从构建到运行的流程
make·cmake·c++八股·项目构建流程
PyGata9 天前
CMake学习笔记(一)
学习笔记·cmake·cmakelists
charlee4410 天前
CMake构建学习笔记26-OpenBLAS库的构建
多线程·cmake·openblas·blas/lapack
charlee4411 天前
CMake构建学习笔记30-Ceres Solver库的构建
静态库·非线性优化·cmake·buildcppdependency·ceres solver
charlee4413 天前
CMake构建学习笔记28-gmp&mpfr库的构建
cmake
charlee4413 天前
CMake构建学习笔记27-初步完成C&C++自动化构建工具
跨平台·cmake·构建·依赖管理
羑悻的小杀马特16 天前
现代 CMake 项目构建完全指南:从基础配置到高级技巧的目标属性管理与智能依赖传递机制解析
cmake·项目构建·属性传递机制
Theliars21 天前
Ubuntu 上使用 VSCode 调试 C++ (CMake 项目) 指南
c++·vscode·ubuntu·cmake