Spec-Zone.ru › CMake

export

Экспортирует цели или пакеты, чтобы внешние проекты могли использовать их напрямую из дерева сборки текущего проекта без установки.

См. команду install(EXPORT) для экспорта целей из дерева установки.

Краткое описание

export(TARGETS <target>... [...])
export(EXPORT <export-name> [...])
export(PACKAGE <PackageName>)
export(SETUP <export-name> [...])
export(PACKAGE_INFO <package-name> [...])
export(SBOM <sbom-name> [...])

Экспорт целей

export(TARGETS <target>... [...])
export(TARGETS <target>... [NAMESPACE <namespace>]
       [APPEND] FILE <filename> [EXPORT_LINK_INTERFACE_LIBRARIES]
       [CXX_MODULES_DIRECTORY <directory>])

Создаёт файл <filename>, который внешние проекты могут включать для импорта целей, указанных в <target>..., из дерева сборки текущего проекта. Это полезно при кросс-компиляции: в одном проекте можно собрать вспомогательные исполняемые файлы, которые будут запускаться на хостовой платформе, а затем импортировать их в другой проект, компилируемый для целевой платформы.

Файл, созданный этой командой, предназначен только для дерева сборки и никогда не должен устанавливаться. См. команду install(EXPORT) для экспорта целей из дерева установки.

Доступны следующие параметры:

NAMESPACE <namespace>

Добавляет строку <namespace> в начало всех имён целей, записываемых в файл.

APPEND

Добавляет данные в файл, а не перезаписывает его. Это можно использовать для последовательного экспорта нескольких целей в один файл.

EXPORT_LINK_INTERFACE_LIBRARIES

Включает в экспорт содержимое свойств, имена которых соответствуют шаблону (IMPORTED_)?LINK_INTERFACE_LIBRARIES(_<CONFIG>)?, даже если политика CMP0022 имеет значение NEW. Это полезно для поддержки потребителей, использующих версии CMake старше 2.8.12.

CXX_MODULES_DIRECTORY <directory>

Добавлено в версии 3.28.

Экспортирует свойства модулей C++ в файлы в указанном каталоге. Имя каждого файла будет соответствовать экспортируемому имени цели (без пространства имён). Эти файлы будут автоматически включены в файл экспорта.

Для этой сигнатуры требуется явно указать все цели. Если в экспорт включена цель-библиотека, но не включена цель, с которой она связана, поведение не определено. См. сигнатуру export(EXPORT), чтобы автоматически экспортировать из дерева сборки те же цели, которые команда install(EXPORT) экспортировала бы из дерева установки.

Примечание

Для объектных библиотек в Xcode предусмотрена специальная обработка, если в CMAKE_OSX_ARCHITECTURES указано несколько архитектур. В этом случае они экспортируются как интерфейсные библиотеки, без объектных файлов, доступных клиентам. Этого достаточно, чтобы удовлетворить транзитивные требования использования других целей, связанных с объектными библиотеками при их реализации.

Эта команда экспортирует все конфигурации сборки из дерева сборки. См. переменную CMAKE_MAP_IMPORTED_CONFIG_<CONFIG>, чтобы сопоставить конфигурации зависимых проектов с экспортированными конфигурациями.

Экспорт целей в Android.mk

export(TARGETS <target>... ANDROID_MK <filename>)

Добавлено в версии 3.7.

Эта сигнатура экспортирует цели, собранные CMake, в систему сборки Android NDK, создавая файл Android.mk со ссылками на предварительно собранные цели. Android NDK поддерживает использование предварительно собранных библиотек — как статических, так и динамических. Это позволяет CMake собирать библиотеки проекта и предоставлять их системе сборки NDK вместе с транзитивными зависимостями, флагами включения и определениями, необходимыми для использования библиотек. Сигнатура принимает список целей и помещает их в файл Android.mk, указанный в <filename>. Эту сигнатуру можно использовать, только если для всех указанных целей политика CMP0022 имеет значение NEW. Если для одной из целей эта политика установлена в OLD, будет выдана ошибка.

Экспорт целей, соответствующих install(EXPORT)

export(EXPORT<export-name>[...])
export(EXPORT <export-name> [NAMESPACE <namespace>] [FILE <filename>]
       [CXX_MODULES_DIRECTORY <directory>] [EXPORT_PACKAGE_DEPENDENCIES])

Создаёт файл <filename>, который внешние проекты могут включать для импорта целей из дерева сборки текущего проекта. Эта сигнатура аналогична сигнатуре export(TARGETS), за исключением того, что цели не перечисляются явно. Вместо этого она экспортирует цели, связанные с экспортом установки <export-name>. Установки целей можно связать с экспортом <export-name> с помощью параметра EXPORT команды install(TARGETS).

EXPORT_PACKAGE_DEPENDENCIES

Примечание

Экспериментальная возможность. Требует CMAKE_EXPERIMENTAL_EXPORT_PACKAGE_DEPENDENCIES.

Указывает, что вызовы find_dependency() следует экспортировать. Подробное описание работы см. в разделе install(EXPORT).

Экспорт целей в Common Package Specification

export(PACKAGE_INFO <package-name> [...])
export(PACKAGE_INFO <package-name> EXPORT <export-name>
       [PROJECT <project-name>|NO_PROJECT_METADATA]
       [APPENDIX <appendix-name>]
       [LOWER_CASE_FILE]
       [VERSION <version>
        [COMPAT_VERSION <version>]
        [VERSION_SCHEMA <string>]]
       [DEFAULT_TARGETS <target>...]
       [DEFAULT_CONFIGURATIONS <config>...]
       [LICENSE <license-string>]
       [DEFAULT_LICENSE <license-string>]
       [DESCRIPTION <description-string>]
       [HOMEPAGE_URL <url-string>]
       [CXX_MODULES_DIRECTORY <directory>])

Добавлено в версии 4.3.

Создаёт файл в формате Common Package Specification, который внешние проекты могут включать для импорта целей, указанных в <target>..., из дерева сборки текущего проекта. См. команду install(PACKAGE_INFO) для экспорта целей из дерева установки. Импортируемые цели неявно помещаются в пространство имён <package-name>.

Имя файла по умолчанию — <package-name>[-<appendix-name>].cps. Если указан параметр LOWER_CASE_FILE, в имени файла будет использовано название пакета, преобразованное в нижний регистр. Файлы записываются в подкаталог cps/<package-name> текущего каталога сборки.

Описание остальных параметров см. в разделе install(PACKAGE_INFO).

Экспорт документов Software Bill of Materials (SBOM)

export(SBOM <sbom-name> [...])
export(SBOM <sbom-name> EXPORTS <export-names>...
       [FORMAT <string>]
       [PROJECT <project-name>|NO_PROJECT_METADATA]
       [VERSION <major>[.<minor>[.<patch>[.<tweak>]]]]
       [LICENSE <license-string>]
       [DESCRIPTION <description-string>]
       [HOMEPAGE_URL <url-string>]
       [PACKAGE_URL <url-string>])

Добавлено в версии 4.3.

Примечание

Экспериментальная возможность. Требует CMAKE_EXPERIMENTAL_GENERATE_SBOM.

Создаёт документ с ведомостью компонентов программного обеспечения (SBOM), описывающий цели из перечисленных наборов экспорта <export-names> и их зависимости в дереве сборки. Цели из всех перечисленных наборов экспорта объединяются в один документ. Созданный SBOM записывается в подкаталог sbom/<sbom-name> текущего каталога сборки.

Сведения о поддерживаемых форматах SBOM и описание остальных параметров см. в разделе install(SBOM).

Экспорт пакетов

export(PACKAGE <PackageName>)
export(PACKAGE <PackageName>)

Сохраняет текущий каталог сборки в пользовательском реестре пакетов CMake для пакета <PackageName>. При поиске пакета <PackageName> команда find_package() может проверять этот каталог. Это помогает зависимым проектам находить и использовать пакет из дерева сборки текущего проекта без участия пользователя. Обратите внимание: запись в реестре пакетов, создаваемая этой командой, работает только вместе с файлом конфигурации пакета (<PackageName>Config.cmake), совместимым с деревом сборки. В некоторых случаях, например при упаковке и общесистемной установке, запись в пользовательский реестр пакетов нежелательна.

Изменено в версии 3.1: Если включена переменная CMAKE_EXPORT_NO_PACKAGE_REGISTRY, команда export(PACKAGE) ничего не делает.

Изменено в версии 3.15: По умолчанию команда export(PACKAGE) ничего не делает (см. политику CMP0090), поскольку заполнение пользовательского реестра пакетов влияет на файлы за пределами дерева исходного кода и дерева сборки. Установите переменную CMAKE_EXPORT_PACKAGE_REGISTRY, чтобы добавлять каталоги сборки в пользовательский реестр пакетов CMake.

Настройка экспорта

export(SETUP <export-name> [...])
export(SETUP <export-name>
       [PACKAGE_DEPENDENCY <dep>
        [ENABLED (<bool-true>|<bool-false>|AUTO)]
        [EXTRA_ARGS <args>...]
       ] [...]
       [TARGET <target>
        [XCFRAMEWORK_LOCATION <location>]
       ] [...]
       )

Добавлено в версии 3.29.

Настраивает параметры экспорта. Аргументы:

PACKAGE_DEPENDENCY <dep>

Примечание

Экспериментальная возможность. Требует CMAKE_EXPERIMENTAL_EXPORT_PACKAGE_DEPENDENCIES.

Указывает зависимость пакета для настройки. Это изменяет способ записи вызовов find_dependency() при выполнении команд export(EXPORT) и install(EXPORT). <dep> — это имя экспортируемого пакета. Этот аргумент принимает следующие дополнительные аргументы:

ENABLED

Вручную управляет экспортом зависимости. Допустимые значения:

<bool-true>

Любое значение, которое CMake распознаёт как «истина». Всегда экспортировать зависимость, даже если от неё не зависит ни одна экспортируемая цель. Это можно использовать для добавления вызовов find_dependency() в экспорт вручную.

<bool-false>

Любое значение, которое CMake распознаёт как «ложь». Никогда не экспортировать зависимость, даже если от неё зависит экспортируемая цель.

AUTO

Экспортировать зависимость, только если от неё зависит экспортируемая цель.

EXTRA_ARGS <args>

Указывает дополнительные аргументы, передаваемые команде find_dependency() после аргумента REQUIRED.

TARGET <target>

Указывает цель для настройки в этом экспорте. Этот аргумент принимает следующие дополнительные аргументы:

XCFRAMEWORK_LOCATION

Указывает расположение .xcframework, содержащего библиотеку этой цели. Если указан, сгенерированный код проверит наличие .xcframework и, если оно существует, будет использовать .xcframework в качестве расположения импортируемой цели вместо установленной библиотеки.

© 2000–2026 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/latest/command/export.html

Spec-Zone.ru

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