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

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

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

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

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

相关推荐
赵民勇8 小时前
cmake中execute_process详解
cmake
凌云行者17 小时前
OpenGL入门004——使用EBO绘制矩形
c++·cmake·opengl
凌云行者4 天前
OpenGL入门003——使用Factory设计模式简化渲染流程
c++·cmake·opengl
凌云行者4 天前
OpenGL入门002——顶点着色器和片段着色器
c++·cmake·opengl
梦起丶5 天前
CMake 生成器表达式介绍
c++·cmake
梦起丶7 天前
CMake 生成器表达式---条件表达式和逻辑运算符
c++·cmake
咩咩大主教9 天前
QtCreator通过CMake多文件编译.cpp、.qss、.h、.ui文件,达到MVC三层架构的效果
c++·qt·cmake·qtcreator·qss·多文件编译·qmake
韦易笑10 天前
Emake:你见过最简单的 C/C++ 构建工具
c++·cmake
winds~15 天前
Cmake中“目标层级“的概念(target_include_directories和include_directories的区别)
c++·cmake