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/