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

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

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

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

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

相关推荐
一只小bit4 天前
CMake 入门实战手册:从理解原理开始,打造高效 C/C++ 开发流程
c语言·开发语言·c++·cmake
研來如此9 天前
Visual Studio 2022
cmake·visual studio
澄澈i14 天前
CMake学习篇[2]---CMake进阶+非同级目录构建+静态库/动态库链接
c++·学习·cmake
usabcd214 天前
如何重新编译HyperLPR原生库以消除16k对齐警告
android·c++·cmake·ndk·mnn·16k对齐·hyperlpr
慧都小项15 天前
Parasoft C/C++test 针对 CMake 项目的自动化测试配置
自动化测试·cmake·parasoft
羑悻的小杀马特1 个月前
CMake 全流程开发实战:从零开始掌握C++项目构建、测试到一键分发的完整解决方案
c++·cmake
UnnamedOrange1 个月前
ROS1 配置代码覆盖率
c++·cmake
UnnamedOrange1 个月前
ROS2 配置 linter 的代码格式化工具为 clang-format
c++·cmake
眠りたいです1 个月前
基于脚手架微服务的视频点播系统-界面布局部分(二):用户界面及系统管理界面布局
c++·qt·ui·微服务·云原生·架构·cmake
assibe1 个月前
cmake基本语法结构
数据库·c++·cmake