PROJECT_IS_TOP_LEVEL

3.21 版本新增。

一个布尔变量,指示当前作用域或其上层中最后一次调用的 project() 命令是否位于顶层 CMakeLists.txt 文件中。

某些模块应仅作为顶层 CMakeLists.txt 文件的组成部分包含,以避免在构建树中产生意外的副作用,此变量可用于有条件地执行此类代码。例如,考虑 CTest 模块,它会创建目标和选项

project(MyProject)
...
if(PROJECT_IS_TOP_LEVEL)
  include(CTest)
endif()

该变量的值将为 true:

该变量的值将为 false: