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/v3.29/variable/PROJECT_IS_TOP_LEVEL.html