PROJECT_IS_TOP_LEVEL¶
3.21 版本新增。
一个布尔变量,指示当前作用域或其上层中最后一次调用的 project()
命令是否位于顶层 CMakeLists.txt
文件中。
某些模块应仅作为顶层 CMakeLists.txt
文件的组成部分包含,以避免在构建树中产生意外的副作用,此变量可用于有条件地执行此类代码。例如,考虑 CTest
模块,它会创建目标和选项
project(MyProject)
...
if(PROJECT_IS_TOP_LEVEL)
include(CTest)
endif()
该变量的值将为 true:
项目顶层目录
通过
ExternalProject
添加的外部项目顶层目录通过
add_subdirectory()
添加的目录,但该目录不包含project()
调用通过
FetchContent_MakeAvailable()
添加的目录,如果获取的内容不包含project()
调用
该变量的值将为 false:
通过
add_subdirectory()
添加的目录,但该目录也包含project()
调用通过
FetchContent_MakeAvailable()
添加的目录,如果获取的内容包含project()
调用