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

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

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

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

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

相关推荐
十五年专注C++开发10 小时前
CMake进阶:vcpkg中OpenSSLConfig.cmake详解
c++·windows·cmake·openssl·跨平台编译
Source.Liu3 天前
【CMake】CMake 基础笔记
cmake
Source.Liu4 天前
【CMake】 `set_target_properties()` 命令详解
cmake
Source.Liu4 天前
【CMake】 `target_link_libraries()` 命令详解
cmake
Source.Liu5 天前
【CMake】`add_library()` 命令详解
cmake
十五年专注C++开发5 天前
CMake进阶:find_package使用总结
开发语言·c++·cmake·跨平台编译
Source.Liu6 天前
【CMake】`add_executable()` 命令详解
cmake
Source.Liu7 天前
【CMake】概述
cmake
charlee448 天前
CMake构建学习笔记32-CMake版本切换
cmake·版本管理·构建·update·alternatives
阳洞洞9 天前
cmake中如何从include_directories中移除某个特定的头文件
c++·cmake