在 CMake 中,CMAKE_SOURCE_DIR
和 PROJECT_SOURCE_DIR
是两个不同的变量,它们的含义和用法略有不同。
-
CMAKE_SOURCE_DIR
:CMAKE_SOURCE_DIR
变量表示包含当前正在处理的 CMakeLists.txt 文件的顶层源代码目录的路径。- 这个变量的值是在 CMake 运行时由 CMake 自动设置的,指向包含当前 CMakeLists.txt 文件的顶层目录。
- 如果你的项目结构是单个 CMake 项目,那么
CMAKE_SOURCE_DIR
和PROJECT_SOURCE_DIR
通常是相同的。
-
PROJECT_SOURCE_DIR
:PROJECT_SOURCE_DIR
变量表示项目的顶层源代码目录的路径。- 这个变量的值是在 CMakeLists.txt 文件中通过
project()
命令指定的项目名称所对应的目录。 - 如果你的 CMake 项目是作为子目录被包含在其他项目中,那么
PROJECT_SOURCE_DIR
可能会指向子项目的顶层目录,而不是整个主项目的顶层目录。
简而言之,在子目录中CMAKE_SOURCE_DIR为项目根目录路径,PROJECT_SOURCE_DIR为当前项目所在的子目录路径