从维基:
CMAKE_CURRENT_SOURCE_DIR这就是当前处理的CMakeLists.txt位于目录
CMAKE_CURRENT_LIST_DIR(自2.8.3),这是当前正在处理的listfile中的目录。
从文档:
CMAKE_CURRENT_SOURCE_DIR:到源目录的路径当前正被处理。 这的完整路径当前正由cmake的处理的源目录。
CMAKE_CURRENT_LIST_DIR:在listfile中的完整目录正在处理中。 随着CMake的项目中的处理listfiles这个变量将始终设置到当前正在处理的listfile中(CMAKE_CURRENT_LIST_FILE)所在的目录。 该值具有的动态范围。 当CMake的在源文件中的处理开始命令它设置此变量,其中该文件位于的目录。 当CMake的从文件完成处理命令它恢复以前的值。 因此宏或功能内的变量的值是文件调用的调用堆栈上最底部入口,包含宏或函数定义的文件不是目录的目录。
在什么情况下这些变量的值不同?