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()
调用