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])
Создаёт файл <filename> , который может быть включён сторонними проектами для импорта целевых объектов, именованных <target>... , из дерева сборки текущего проекта. Это полезно при кросс-компиляции для построения утилитных исполняемых файлов, которые могут работать на целевой платформе в одном проекте, а затем импортировать их в другой проект, компилируемый для платформы назначения.
Файл, созданный этой командой, специфичен для дерева сборки и никогда не должен устанавливаться. См. команду install(EXPORT) для экспорта целевых объектов из дерева установки.
Доступны следующие опции:
-
NAMESPACE <namespace> -
Добавляет строку
<namespace>к именам всех целевых объектов, записанных в файл. -
APPEND -
Добавляет содержимое в файл, вместо перезаписи. Это может использоваться для поэтапного экспорта нескольких целевых объектов в один и тот же файл.
-
EXPORT_LINK_INTERFACE_LIBRARIES -
Включает содержимое свойств, имена которых соответствуют шаблону
(IMPORTED_)?LINK_INTERFACE_LIBRARIES(_<CONFIG>)?в экспорт, даже когда политикаCMP0022имеет значение NEW. Это полезно для поддержки потребителей, использующих версии CMake, более старые чем 2.8.12.
Данная сигнатура требует явного перечисления всех целевых объектов. Если целевой объект библиотеки включён в экспорт, но целевой объект, на который он ссылается, не включён, поведение не определено. См. сигнатуру 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>])
Создаёт файл <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.24/command/export.html