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

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

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

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

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

相关推荐
学编程的闹钟5 天前
安装GmSSL3库后用VS编译CMake源码
c语言·c++·ide·开发工具·cmake·visual studio
十五年专注C++开发13 天前
CMake进阶:SelectLibraryConfigurations模块
c++·cmake·自动化构建
元让_vincent13 天前
DailyCoding C++ CMake | CMake 踩坑记:解决 ROS 项目中的“循环引用”与库链接依赖问题
c++·机器人·ros·动态库·静态库·cmake·循环引用
周小天..14 天前
QT6+cmake+cuda的构建(windows)
cmake
Laurence16 天前
CMake / Ninja 构建 Qt 项目报 undefined reference to __imp__ 错误的解决方法
qt·cmake·项目构建·undefined·ninja·__imp__
___波子 Pro Max.16 天前
CMake configure_file使用教程详解
cmake
D.不吃西红柿21 天前
CPM.cmake轻量级包管理器
c++·cmake·cpm.cmake
十五年专注C++开发1 个月前
CMake基础: 在release模式下生成调试信息的方法
linux·c++·windows·cmake·跨平台构建
kimicsdn1 个月前
opentelemetry-demo currency cpp 项目编译流程分享
c++·cmake·libprotobuf-dev
十五年专注C++开发1 个月前
CMake进阶:模块模式示例FindOpenCL.cmake详解
开发语言·c++·cmake·跨平台编译