Spec-Zone.ru › CMake 3.12

include_guard

Предоставляет include-защиту для файла, обрабатываемого в настоящее время CMake.

include_guard([DIRECTORY|GLOBAL])

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

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

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

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

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

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

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

Spec-Zone.ru

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