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

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

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

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

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

相关推荐
一个平凡而乐于分享的小比特1 天前
Autoconf:Linux自动生成Makefile的详解
makefile·cmake·autoconf
张世争4 天前
windows clion MingW cmake 编译运行 FreeRTOS
windows·freertos·mingw·cmake·clion
十五年专注C++开发5 天前
CMake进阶:核心命令get_filename_component 完全详解
开发语言·c++·cmake·跨平台编译
麻辣长颈鹿Sir7 天前
CMAKE指令集
linux·运维·windows·cmake·cmake指令集
lunatic78 天前
CMake 常用内置变量说明
c++·cmake
ALex_zry9 天前
CMake变量传递与宏定义技术详解:从问题到解决方案
开发语言·spring·cmake·条件编译
十五年专注C++开发11 天前
CMake进阶:vcpkg中OpenSSLConfig.cmake详解
c++·windows·cmake·openssl·跨平台编译
Source.Liu13 天前
【CMake】CMake 基础笔记
cmake
Source.Liu14 天前
【CMake】 `set_target_properties()` 命令详解
cmake