Spec-Zone.ru › CMake 3.28

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>

Новая в версии 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> [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.28/command/export.html

Spec-Zone.ru

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