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

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

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

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

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

相关推荐
等风来不如迎风去2 天前
Jetson Xavier NX 与 NVIDIA RTX 4070 (12GB)
udp·webrtc·cmake·clion
困鲲鲲2 天前
CMake2: CMakeLists.txt的常用命令
c++·cmake·常用命令
十五年专注C++开发5 天前
CMake进阶: CMake Modules---简化CMake配置的利器
linux·c++·windows·cmake·自动化构建
十五年专注C++开发10 天前
CMake进阶: externalproject_add用于在构建阶段下载、配置、构建和安装外部项目
linux·c++·windows·cmake·自动化构建
Tipriest_10 天前
CMake message()使用指南
c++·cmake·message
Tipriest_10 天前
CMake include_directories()使用指南
cmake
十五年专注C++开发11 天前
通信中间件 Fast DDS(一) :编译、安装和测试
linux·c++·windows·中间件·cmake·vcpkg
略无慕艳意17 天前
Notes of Effective CMake
c++·c·cmake
略无慕艳意1 个月前
【笔记】Visual Studio 2022 入门指南
c++·c·cmake·microsoft visual studio 2022
SoveTingღ1 个月前
【开发环境配置】VScode里面配置cmake遇到的问题
c语言·vscode·cmake·嵌入式软件·开发环境配置