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

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

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

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

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

相关推荐
十五年专注C++开发1 小时前
CMake基础: 在release模式下生成调试信息的方法
linux·c++·windows·cmake·跨平台构建
kimicsdn1 天前
opentelemetry-demo currency cpp 项目编译流程分享
c++·cmake·libprotobuf-dev
十五年专注C++开发3 天前
CMake进阶:模块模式示例FindOpenCL.cmake详解
开发语言·c++·cmake·跨平台编译
番茄灭世神4 天前
基于VScode搭建GD32开发环境
arm开发·vscode·单片机·cmake·gd32
l1t6 天前
在arm64 Linux系统上编译tdoku-lib的问题和解决
linux·运维·服务器·c语言·cmake
番茄灭世神6 天前
基于VScode的C/C++环境搭建
vscode·cmake·gcc·c\c++·llvm·工具链搭建
Two_brushes.7 天前
Cmake中寻库文件的路径
开发语言·c++·cmake
十五年专注C++开发7 天前
CMake基础:foreach详解
linux·c++·windows·cmake·跨平台编译
wysaid7 天前
一个 VS Code 插件 (cc-format):让你的 CMake 代码拥有 CLion 般的格式化体验
cmake