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

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

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

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

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

相关推荐
Robot_Nav1 天前
CMake、Ament 与 Catkin:ROS 构建系统的前世今生
ros·cmake
CoderMeijun5 天前
CMake 入门笔记
c++·笔记·编译·cmake·构建工具
郝学胜-神的一滴5 天前
墨韵技术|CMake:现代项目构建的「行云流水」之道
c++·程序人生·软件工程·软件构建·cmake
H Journey6 天前
C++之 CMake、CMakeLists.txt、Makefile
开发语言·c++·makefile·cmake
H Journey8 天前
VSCode下CMake使用
vscode·cmake
9分钟带帽8 天前
vscode中配置Qt6和CMake的开发环境
c++·vscode·cmake
阿拉斯攀登9 天前
从入门到实战:CMake 与 Android JNI/NDK 开发全解析
android·linux·c++·yolo·cmake
9分钟带帽9 天前
vscode解决终端输出乱码的问题
vscode·cmake
rqtz11 天前
【机器人】ROS2 功能包创建与 CMake 编译链路探秘
机器人·cmake·ros2
AIminminHu12 天前
OpenGL渲染与几何内核那点事-项目实践理论补充(三-1-(2):当你的CAD代码变得“又大又乱”:从手动编译到CMake,从随性编码到单元测试))
c++·单元测试·cmake·cad·cad开发