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–2022 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.25/command/export.html