CMAKE_CURRENT_SOURCE_DIR 和 CMAKE_SOURCE_DIR 是两个不同的 CMake 内置变量,它们的含义如下:
CMAKE_CURRENT_SOURCE_DIR
表示当前正在处理的 CMakeLists.txt 所在的源代码目录路径。 这个变量的值会随着 CMake 在不同目录下处理 CMakeLists.txt 文件而变化。
CMAKE_SOURCE_DIR
表示顶层 CMakeLists.txt 所在的源代码根目录路径,即整个项目的源代码根目录。 这个变量在整个构建过程中保持不变。简单来说,CMAKE_CURRENT_SOURCE_DIR 是相对的,指向当前正在处理的源码目录,而 CMAKE_SOURCE_DIR 是绝对的,指向整个项目的源码根目录。
在处理多级目录结构的项目时,正确使用这两个变量是很重要的。通常情况下,如果需要引用同级或子级目录下的文件,应该使用 CMAKE_CURRENT_SOURCE_DIR。如果需要引用项目根目录下的文件,则应使用 CMAKE_SOURCE_DIR。