У меня большой проект 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 в папке сборки (я хочу найти его в каталоге префикса установки). Возможно, мне нужно явно включить файл конфигурации, чтобы получить доступ к установленным переменным?
Я предполагаю, что никто не отвечает мне, потому что все остальные просто устанавливают две переменные окружения в проекте верхнего уровня, считывают их в проекте ниже и называют это днем? Все это выглядит так, как будто очень просто.