Spec-Zone.ru › CMake 3.27

export

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

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

Синтаксис

export(TARGETS <target>... [...])
export(EXPORT <export-name> [...])
export(PACKAGE <PackageName>)

Экспорт целевых объектов

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>

Примечание

Экспериментальная функция. Включена с помощью CMAKE_EXPERIMENTAL_CXX_MODULE_CMAKE_API

Экспортирует свойства модулей 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> [NAMESPACE <namespace>] [FILE <filename>]
       [CXX_MODULES_DIRECTORY <directory>])

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

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

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.

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

Spec-Zone.ru

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