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()
© 2000–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/latest/variable/PROJECT_IS_TOP_LEVEL.html