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

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

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

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

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

相关推荐
old_power3 天前
【LunarVim】CMake LSP配置
cmake·lsp·lunarvim
mahuifa7 天前
(40)VTK C++开发示例 ---集合
c++·vtk·cmake·3d开发
mahuifa7 天前
(34)VTK C++开发示例 ---将图片映射到平面
c++·平面·3d·vtk·cmake
mahuifa8 天前
(36)VTK C++开发示例 ---纹理贴图四边形
c++·vtk·cmake·贴图·3d开发
mahuifa8 天前
(35)VTK C++开发示例 ---将图片映射到平面2
c++·vtk·cmake·3d开发
blueshaw9 天前
CMake中的“包管理“模块FetchContent
c++·cmake
TNTLWT13 天前
3、CMake语法:制作和使用动态库和静态库
开发语言·cmake
xMathematics15 天前
计算机图形学实践:结合Qt和OpenGL实现绘制彩色三角形
开发语言·c++·qt·计算机图形学·cmake·opengl
niuTaylor17 天前
从入门到精通:CMakeLists.txt 完全指南
linux·服务器·cmake
lemontree194518 天前
Ubuntu18.04 升级最新版本Cmake
cmake·ubuntu18.04