Реестр пакетов cmake / поиск последней установки субмодуля - PullRequest
0 голосов
/ 14 ноября 2018

У меня большой проект cmake с уровнем абстракции ОС (OSAL), который я хотел бы использовать в другом проекте. Большой проект .... очень трогательный и не мой, но добавление new info к установке всегда возможно.

Основной сценарий таков. Большой проект имеет префикс установки, обычно _install. Все подмодули заканчиваются на _build/_install/lib и _build/_install/include этого более крупного проекта. Большой проект имеет настраиваемую сборку, поэтому существует множество каталогов _build (_dbBuild, _clientBuild, _serverBuild и т. Д.).

Подмодуль имеет простую установку (где DESTINATION это просто префикс установки) ...

install (TARGETS osal DESTINATION lib)
install (FILES ${OSAL_HDRS} DESTINATION include)

Учитывая совершенно отдельный проект, каков наилучший способ найти эти заголовки / библиотеки? Я почти всегда буду хотеть самую последнюю их установку.

Различные поиски в Google делают это хорошим вариантом.
https://cmake.org/cmake/help/latest/manual/cmake-packages.7.html#user-package-registry

Моя основная проблема заключается в том, что для исходного проекта это должно быть 1 или 2 строки кода, аналогично для 2-го / использующего проекта ... хранить самый новый пакет (или включать / lib ) местоположение в исходном проекте и прочитайте его в месте назначения. Но я вижу только очень сложные сценарии с 20-30 строками конфигурации cmake. Я хотел бы повторить поведение Find* в пункте назначения:

find_path(OSAL_INCLUDE_DIR osal.h)
find_library(OSAL_LIBRARIES NAMES osal)

Как и find*, я хочу иметь возможность переопределить найденное местоположение. Я также хотел бы, чтобы существующая сборка 1034 * нашла новое местоположение, если оно существует (не найдено и не выполнено). Но последний бит не обязателен.

Какой простой способ добиться этого? Я прошу прощения, если это очевидно для других из документации, которую я связал. Почему-то документация по cmake для меня непостижима. Я смотрел на нее буквально за час до публикации.

Теперь играю с различными формами install(TARGETS EXPORT), install(EXPORT), export(PACKAGE) и osalConfig.cmake файла в течение нескольких часов. В последующем проекте удается найти файл Config в папке сборки (я хочу найти его в каталоге префикса установки). Возможно, мне нужно явно включить файл конфигурации, чтобы получить доступ к установленным переменным?

Я предполагаю, что никто не отвечает мне, потому что все остальные просто устанавливают две переменные окружения в проекте верхнего уровня, считывают их в проекте ниже и называют это днем? Все это выглядит так, как будто очень просто.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...