Spec-Zone.ru › CMake 3.21

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.21/command/include_guard.html

Spec-Zone.ru

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