chapter02.a - 总结常用的 CMake 变量

PROJECT_*

PROJECT_SOURCE_DIR
PROJECT_BINARY_DIR

不存在 PROJECT_LIST_DIR

PROJECT_* 变量会随着 project 命令的出现而变更。

CMAKE_*

CMAKE_SOURCE_DIR
CMAKE_BINARY_DIR

也不存在 CMAKE_LIST_DIR

和本次 cmake 命令有关。

CMAKE_CURRENT_*

通过 VS Code 补全可以看到有很多变量:

其中 LISTSOURCE 的区别是:include 会直接将 cmake 文件插入进来,这个时候不会改变 SOURCE,但是会改变 LIST。所以为了表示文件的相对位置一般还是用 LIST 吧?

同理,函数定义处和调用处可能是不同的,想要获取函数定义处的信息,需要使用 CMAKE_CURRENT_FUNCTION_*