Spec-Zone.ru › CMake 3.22

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–2021 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.22/command/include_guard.html

Spec-Zone.ru

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