Spec-Zone.ru › CMake 3.26

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 перечислены несколько архитектур. В этом случае они будут экспортированы как Библиотеки интерфейса без доступных для клиентов объектных файлов. Это достаточно для удовлетворения требований транзитивного использования других целевых объектов, которые ссылаются на объектные библиотеки в их реализации.

Экспорт целевых объектов в 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–2023 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.26/command/export.html

Spec-Zone.ru

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