Spec-Zone.ru › CMake 3.26

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

Spec-Zone.ru

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