PROJECT_IS_TOP_LEVEL

3.21 版本新增。

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

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

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

变量值为 true 的情况包括:

变量值为 false 的情况包括: