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

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

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

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

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

相关推荐
羑悻的小杀马特2 天前
CMake 全流程开发实战:从零开始掌握C++项目构建、测试到一键分发的完整解决方案
c++·cmake
UnnamedOrange6 天前
ROS1 配置代码覆盖率
c++·cmake
UnnamedOrange7 天前
ROS2 配置 linter 的代码格式化工具为 clang-format
c++·cmake
眠りたいです10 天前
基于脚手架微服务的视频点播系统-界面布局部分(二):用户界面及系统管理界面布局
c++·qt·ui·微服务·云原生·架构·cmake
assibe11 天前
cmake基本语法结构
数据库·c++·cmake
charlee4411 天前
CMake构建学习笔记25-SpatiaLite库的构建
cmake·nmake·构建·spatialite
charlee4412 天前
CMake构建学习笔记24-使用通用脚本构建PROJ和GEOS
cmake·构建·proj·geos
charlee4413 天前
CMake构建学习笔记23-SQLite库的构建
sqlite·动态库·cmake·构建
charlee4417 天前
CMake构建学习笔记22-libxml2库的构建
cmake·构建·libxml2
charlee4419 天前
CMake构建学习笔记21-通用的CMake构建脚本
cmake·powershell·构建