Spec-Zone.ru › CMake 3.27

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–2022 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.24/variable/PROJECT_IS_TOP_LEVEL.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API