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

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

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

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

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

相关推荐
郝学胜-神的一滴5 小时前
跨平台动态库与头文件:从原理到命名的深度解析
linux·c++·程序人生·unix·cmake
吃鱼鱼鱼20 小时前
CMakeListsc常用路径详解
cmake
瞎折腾啥啊3 天前
vcpkg与CMake
linux·c++·cmake·cmakelists
众少成多积小致巨4 天前
Cmake 入门指南
cmake
瞎折腾啥啊5 天前
现代 CMake 目标系统
c++·cmake·cmakelists
H Journey5 天前
常用知识总结C++、CMake、Linux
linux·c++·opencv·cmake
H Journey6 天前
Windows + VSCode + CMake 编译
windows·vscode·cmake
H Journey6 天前
CMakeLists.txt 基本用法实战
cmake·cmakelists
雪域迷影9 天前
Windows上使用VS2026和CMake编译LearnOpenGL项目源代码
windows·cmake·opengl·vs2026·gthub
瞎折腾啥啊13 天前
CMake FetchContent与ExternalProject
c++·cmake·cmakelists