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

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

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

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

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

相关推荐
code bean19 小时前
【CMake 】CMake 中的 target_include_directories 详解
开发语言·c++·cmake
繁星蓝雨19 小时前
Qt优雅的组织项目结构二(基于Qt5使用CmakeList进行模块化配置)——————附带详细示例代码
开发语言·qt·cmake·cmakefile.txt·.cmake
Peter·Pan爱编程2 天前
cmake 升级
c++·cmake·cuda
雪域迷影3 天前
macOS中使用cJSON解析库解析JSON
c++·macos·json·c·cmake·pkg-config
程序喵大人9 天前
CMake入门教程
开发语言·c++·cmake·cmake入门
威桑11 天前
一个 CMake 项目是否只能有一个 install 目录?
linux·c++·cmake
cape_NO_711 天前
10分钟学习CMake ①
cmake
gcfer12 天前
C/C++八股文知识积累5—项目从构建到运行的流程
make·cmake·c++八股·项目构建流程
PyGata19 天前
CMake学习笔记(一)
学习笔记·cmake·cmakelists
charlee4421 天前
CMake构建学习笔记26-OpenBLAS库的构建
多线程·cmake·openblas·blas/lapack