Spec-Zone.ru › CMake 3.31

include_guard

Добавлен в версии 3.10.

Обеспечивает защиту от включения для файла, который в настоящее время обрабатывается CMake.

include_guard([DIRECTORY|GLOBAL])

Настраивает защиту от включения для текущего файла CMake (см. документацию переменной CMAKE_CURRENT_LIST_FILE).

CMake завершит обработку текущего файла в позиции команды include_guard если текущий файл уже был обработан для соответствующей области (см. ниже). Это обеспечивает функциональность, аналогичную защите от включения, обычно используемой в заголовочных файлах исходного кода, или директиве #pragma once. Если текущий файл был обработан ранее для соответствующей области, эффект будет таким, как будто была вызвана команда return(). Не вызывайте эту команду изнутри функции, определенной в текущем файле.

Можно указать необязательный аргумент, определяющий область действия защиты. Возможные значения для опции:

DIRECTORY

Защита от включения действует в текущем каталоге и ниже. Файл будет включен только один раз в пределах этой области каталога, но может быть включен снова другими файлами за пределами этого каталога (т. е. родительским каталогом или другим каталогом, не включённым с помощью add_subdirectory() или include() из текущего файла или его дочерних элементов).

GLOBAL

Защита от включения действует глобально для всего построения. Текущий файл будет включен только один раз независимо от области.

Если аргументы не указаны, include_guard имеет такую же область действия, как переменная, что означает, что эффект защиты от включения изолирован наиболее последней областью действия функции или текущим каталогом, если внутренние области действия функций отсутствуют. В этом случае поведение команды такое же, как:

if(__CURRENT_FILE_VAR__)
  return()
endif()
set(__CURRENT_FILE_VAR__ TRUE)

© 2000–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.31/command/include_guard.html

Spec-Zone.ru

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