Spec-Zone.ru › CMake 3.17

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

Spec-Zone.ru

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