Added in version 3.21.
A boolean variable indicating whether the most recently called project() command in the current scope or above was in the top level CMakeLists.txt file.
Some modules should only be included as part of the top level CMakeLists.txt file to not cause unintended side effects in the build tree, and this variable can be used to conditionally execute such code. For example, consider the CTest module, which creates targets and options:
project(MyProject) ... if(PROJECT_IS_TOP_LEVEL) include(CTest) endif()
The variable value will be true in:
ExternalProject
add_subdirectory() that does not also contain a project() callFetchContent_MakeAvailable(), if the fetched content does not contain a project() callThe variable value will be false in:
add_subdirectory() that also contains a project() callFetchContent_MakeAvailable(), if the fetched content contains a project() call
© 2000–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.31/variable/PROJECT_IS_TOP_LEVEL.html