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

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

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

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

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

相关推荐
张世争12 小时前
windows clion MingW cmake 编译运行 FreeRTOS
windows·freertos·mingw·cmake·clion
十五年专注C++开发2 天前
CMake进阶:核心命令get_filename_component 完全详解
开发语言·c++·cmake·跨平台编译
麻辣长颈鹿Sir4 天前
CMAKE指令集
linux·运维·windows·cmake·cmake指令集
lunatic75 天前
CMake 常用内置变量说明
c++·cmake
ALex_zry6 天前
CMake变量传递与宏定义技术详解:从问题到解决方案
开发语言·spring·cmake·条件编译
十五年专注C++开发7 天前
CMake进阶:vcpkg中OpenSSLConfig.cmake详解
c++·windows·cmake·openssl·跨平台编译
Source.Liu10 天前
【CMake】CMake 基础笔记
cmake
Source.Liu11 天前
【CMake】 `set_target_properties()` 命令详解
cmake
Source.Liu11 天前
【CMake】 `target_link_libraries()` 命令详解
cmake
Source.Liu12 天前
【CMake】`add_library()` 命令详解
cmake