CMakeListsc常用路径详解

1. CMAKE_SOURCE_DIR

  • 含义:最顶层 CMakeLists.txt 所在的目录

  • 特点 :整个构建过程中永远不会改变

  • 指向 :运行 cmake 命令时指定的源代码目录

2. CMAKE_CURRENT_SOURCE_DIR

  • 含义当前正在处理的 CMakeLists.txt 所在的目录

  • 特点 :随着 CMake 递归处理子目录而动态变化

  • 指向:每个 CMakeLists.txt 文件自己的目录

3. PROJECT_SOURCE_DIR

  • 含义最近一次调用 project() 命令的 CMakeLists.txt 所在的目录

  • 特点 :每调用一次 project(),这个值就会改变

  • 指向:当前项目的根目录

4. CMAKE_CURRENT_LIST_DIR

  • 含义 :当前正在处理的 CMakeLists.txt 所在的目录(与 CMAKE_CURRENT_SOURCE_DIR 几乎相同)

  • 区别 :在 include()add_subdirectory() 时行为略有不同,但大多数情况下相同

复制代码
~/work/                         
├── app/                                ← CMAKE_SOURCE_DIR
│   ├── CMakeLists.txt                  # project(ui)  ← PROJECT_SOURCE_DIR
│   └── test/
│       └── CMakeLists.txt              # ← CMAKE_CURRENT_SOURCE_DIR
│   └── src/ 
│        └── CMakeLists.txt 
│   └── include/
相关推荐
郝学胜-神的一滴1 天前
中级OpenGL教程 023:Assimp模型加载全解——从源码到架构的骈文探秘
c++·unity·游戏引擎·cmake·unreal engine·opengl
橙色阳光五月天8 天前
CMake 构建配置文件解析
c++·cmake·plugin
blueman888810 天前
Qt5通过vcpkg中调用时,在debug模式下调试时总是调用release的plugins文件夹中的dll
c++·qt·cmake
郝学胜-神的一滴17 天前
CMake 038:OBJECT目标复用编译+Linux动态库版本自动化管理
linux·c++·程序人生·软件工程·软件构建·cmake·工程配置
郝学胜_神的一滴19 天前
CMake 037:宏传递流转机制与C++编译特性跨平台适配指南
c++·cmake
郝学胜_神的一滴22 天前
CMake 034:生成器表达式:解耦构建时序、精简分支逻辑的终极利器
c++·cmake
郝学胜_神的一滴1 个月前
CMake 30:循环语法全解|foreach_while双循环精讲、迭代技巧与实战避坑指南
c++·cmake
郝学胜_神的一滴1 个月前
CMake 27:缓存变量的特性、语法、类型与实操全解
c++·cmake
郝学胜_神的一滴1 个月前
CMake 026:属性体系精讲、四大作用域全解 & 实战代码落地
c++·cmake
郝学胜_神的一滴1 个月前
CMake 021: IF 条件判据详诠
c++·cmake