PROJECT_IS_TOP_LEVEL¶
在 3.21 版本加入.
一个布尔变量,指示在当前范围或更高范围内最近调用的 project() 命令是否在顶级 CMakeLists.txt 文件中。
一些模块应该只作为顶级 CMakeLists.txt 文件的一部分包含在内,以免在构建树中造成意外的副作用,并且此变量可用于有条件地执行此类代码。例如,考虑 CTest 模块,它创建目标和选项:
project(MyProject)
...
if(PROJECT_IS_TOP_LEVEL)
include(CTest)
endif()
变量值将在以下情况下为真:
项目的顶级目录
ExternalProject添加的外部项目的顶级目录由
add_subdirectory()添加的目录,但不包含project()调用由
FetchContent_MakeAvailable()添加的目录,如果获取的内容不包含project()调用
变量值在以下情况下将为假:
由
add_subdirectory()添加的目录,其中还包含一个project()调用由
FetchContent_MakeAvailable()添加的目录,如果获取的内容包含project()调用