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

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

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

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

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

相关推荐
zhy295636 小时前
【LIBS】开源库编译之OSQP
ubuntu·cmake·osqp·libs
charlee441 天前
CMake构建学习笔记19-OpenSSL库的构建
ssl·cmake·c/c++·构建
Prejudices2 天前
CMake的INSTALL FILES和INSTALL DIRECTORY有什么区别
cmake
上官永石4 天前
《Modern CMake for C++》学习笔记
cmake
Yongqiang Cheng6 天前
Installing CMake (安装 CMake)
cmake·安装 cmake
石悼花9 天前
Visual Studio 2022+CMake配置PCL1.14.1
c++·cmake·visual studio·pcl·openni2
___波子 Pro Max.13 天前
cmake CMAKE_CURRENT_SOURCE_DIR和CMAKE_CURRENT_LIST_DIR的区别
cmake
dragoo115 天前
vscode cmake头文件无法跳转
c++·vscode·cmake·头文件
路西法Lux16 天前
Cmake+基础命令
cmake