Spec-Zone.ru › CMake

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

Spec-Zone.ru

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