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

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

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

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

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

相关推荐
瞎折腾啥啊3 天前
CMake FetchContent与ExternalProject
c++·cmake·cmakelists
JMchen1233 天前
集成第三方 C/C++ 库到 Android NDK 项目:OpenCV 与 FFmpeg 实战指南
opencv·ffmpeg·音视频开发·cmake·jni·ndk·abi 兼容性
郝学胜-神的一滴5 天前
从零起步:CMake基础入门与实战跨平台编译
c++·软件工程·软件构建·cmake
AlbertS6 天前
distcc + ccache 编译递归问题排查总结
c++·cmake·gcc·g++·distcc·ccache
Robot_Nav8 天前
CMake、Ament 与 Catkin:ROS 构建系统的前世今生
ros·cmake
CoderMeijun12 天前
CMake 入门笔记
c++·笔记·编译·cmake·构建工具
郝学胜-神的一滴12 天前
墨韵技术|CMake:现代项目构建的「行云流水」之道
c++·程序人生·软件工程·软件构建·cmake
H Journey13 天前
C++之 CMake、CMakeLists.txt、Makefile
开发语言·c++·makefile·cmake
H Journey15 天前
VSCode下CMake使用
vscode·cmake
9分钟带帽15 天前
vscode中配置Qt6和CMake的开发环境
c++·vscode·cmake