Spec-Zone.ru › CMake 3.18

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

Spec-Zone.ru

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