Spec-Zone.ru › CMake 3.29

export

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

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

Синтаксис

export(TARGETS <target>... [...])
export(EXPORT <export-name> [...])
export(PACKAGE <PackageName>)
export(SETUP <export-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).

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

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

Сохраняет текущий каталог сборки в реестре пакетов CMake пользователя для пакета <PackageName>. Команда find_package() может учитывать каталог при поиске пакета <PackageName>. Это помогает зависимым проектам находить и использовать пакет из дерева сборки текущего проекта без помощи пользователя. Обратите внимание, что запись в реестре пакетов, создаваемая этой командой, работает только в сочетании с файлом конфигурации пакета (<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–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.29/command/export.html

Spec-Zone.ru

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