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

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

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

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

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

相关推荐
微笑倾城2 天前
Windows平台下CMake工程中使用protobuf
c++·cmake
010米粉0102 天前
Qt Cmake之路(一):Cmake变量语法
开发语言·qt·cmake
Mr_WangAndy2 天前
cmake_第二章 CMake基础语法_cmake列表命令list(),字符串string()和aux_source_directory()
cmake·cmake列表list·cmake字符串string·源文件查找
Mr_WangAndy2 天前
cmake_第二章 CMake基础语法_set(),缓存变量set(CACHE)
cmake·cmake普通变量·cmake缓存变量
Mr_WangAndy3 天前
cmake_第二章 CMake基础语法_cmake生成器,cmakegui构建和add_subdirectory()
cmake·cmake生成器·cmake gui·子目录处理
Mr_WangAndy4 天前
cmake_cmake简介
cmake·cmake构建·cmake编译·cmake简介
code bean5 天前
【CMake 】[第十篇]CMake find_package 完全指南:让第三方库集成变得简单
c++·cmake
雪域迷影7 天前
Windows11中使用VS2022编译运行libevent网络库
网络·github·cmake·visual studio·libevent
code bean8 天前
【CMake 】CMake 中的 target_include_directories 详解
开发语言·c++·cmake
繁星蓝雨8 天前
Qt优雅的组织项目结构二(基于Qt5使用CmakeList进行模块化配置)——————附带详细示例代码
开发语言·qt·cmake·cmakefile.txt·.cmake