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

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

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

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

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

相关推荐
___波子 Pro Max.1 天前
CMake GLOB返回路径规则及示例
cmake
struggle20252 天前
LLMControlsArm开源程序是DeepSeek 控制熊猫机械臂
人工智能·python·cmake·jupyternotebook·deepseek
德先生&赛先生4 天前
CMake入门:3、变量操作 set 和 list
c++·cmake
爱出名的狗腿子5 天前
vscode + cmake + ninja+ gcc 搭建MCU开发环境
ide·vscode·单片机·c·cmake·gcc·ninja
十五年专注C++开发6 天前
CMake指令:string(字符串操作)
linux·开发语言·c++·cmake·跨平台编译
十五年专注C++开发8 天前
CMake指令:list()
数据结构·c++·list·cmake·自动化编译工具
十五年专注C++开发13 天前
CMake指令:set()
开发语言·c++·跨平台·编译工具·cmake·自动化编译工具
十五年专注C++开发14 天前
CMake指令:find_package()在Qt中的应用
开发语言·c++·qt·cmake·自动化编译工具·自动化构建工具
十五年专注C++开发15 天前
CMake指令:add_library()
开发语言·c++·cmake·自动化编译工具
十五年专注C++开发15 天前
CMake基础:CMakeLists.txt 文件结构和语法
开发语言·c++·cmake·跨平台编译