export
Экспорт целей из дерева сборки для использования внешними проектами.
export(EXPORT <export-name> [NAMESPACE <namespace>] [FILE <filename>])
Создаёт файл <filename> , который может быть включён внешними проектами для импорта целей из дерева сборки текущего проекта. Это полезно при кросс-компиляции для построения утилитных исполняемых файлов, которые могут выполняться на платформе хоста в одном проекте, а затем импортировать их в другой проект, компилируемый для целевой платформы. Если указан параметр NAMESPACE, строка <namespace> будет добавлены в начало всех имён целей, записанных в файл.
Установки целей связаны с экспортом <export-name> с помощью параметра EXPORT команды install(TARGETS).
Файл, созданный этой командой, специфичен для дерева сборки и никогда не должен устанавливаться. См. команду install(EXPORT) для экспорта целей из дерева установки.
Свойства, заданные на сгенерированных целях IMPORTED, будут иметь те же значения, что и окончательные значения входных целей TARGETS.
export(TARGETS [target1 [target2 [...]]] [NAMESPACE <namespace>]
[APPEND] FILE <filename> [EXPORT_LINK_INTERFACE_LIBRARIES])
Эта сигнатура похожа на сигнатуру EXPORT, но цели перечисляются явно, а не указываются как имя экспорта. Если задан параметр APPEND, сгенерированный код будет добавлен в конец файла, а не перезаписан. Ключевое слово EXPORT_LINK_INTERFACE_LIBRARIES, если оно присутствует, приводит к экспорту содержимого свойств, соответствующих (IMPORTED_)?LINK_INTERFACE_LIBRARIES(_<CONFIG>)?, когда политика CMP0022 установлена в значение NEW. Если целевая библиотека включена в экспорт, но целевая библиотека, на которую она ссылается, не включена, поведение не определено.
Примечание
Библиотеки объектов в Xcode имеют специальную обработку, если в CMAKE_OSX_ARCHITECTURES перечислено несколько архитектур. В этом случае они будут экспортированы как Библиотеки интерфейса без доступных клиентам объектных файлов. Это достаточно для удовлетворения требований к транзитивному использованию других целей, которые ссылаются на библиотеки объектов в их реализации.
export(PACKAGE <PackageName>)
Сохраняет текущий каталог сборки в реестре пользовательских пакетов CMake для пакета <PackageName>. Команда find_package() может учитывать каталог при поиске пакета <PackageName>. Это помогает зависимым проектам находить и использовать пакет из дерева сборки текущего проекта без помощи пользователя. Обратите внимание, что запись в реестре пакетов, созданная этой командой, работает только в сочетании с файлом конфигурации пакета (<PackageName>Config.cmake), который работает с деревом сборки. В некоторых случаях, например, для упаковки и для системных установок, нежелательно записывать реестр пользовательских пакетов.
По умолчанию команда export(PACKAGE) ничего не делает (см. политику CMP0090), так как заполнение реестра пользовательских пакетов имеет последствия за пределами исходного и дерева сборки. Установите переменную CMAKE_EXPORT_PACKAGE_REGISTRY для добавления каталогов сборки в реестр пользовательских пакетов CMake.
export(TARGETS [target1 [target2 [...]]] [ANDROID_MK <filename>])
Эта сигнатура экспортирует скомпилированные с помощью CMake цели в систему сборки Android ndk, создавая файл Android.mk, который ссылается на предопределённые цели. Android NDK поддерживает использование предварительно скомпилированных библиотек, как статических, так и динамических. Это позволяет CMake собирать библиотеки проекта и делать их доступными для системы сборки ndk, включая транзитивные зависимости, флаги включения и определения, необходимые для использования библиотек. Сигнатура принимает список целей и помещает их в файл Android.mk, указанный параметром <filename>. Эта сигнатура может быть использована только в том случае, если политика CMP0022 установлена в NEW для всех заданных целей. Будет выдано сообщение об ошибке, если эта политика установлена в OLD для одной из целей.
© 2000–2020 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.19/command/export.html