Spec-Zone.ru › CMake 3.11

include_guard

Обеспечивает защитный механизм включения для файла, в настоящее время обрабатываемого 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–2019 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.11/command/include_guard.html

Spec-Zone.ru

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