Алиас для библиотеки

Хотелось бы узнать, можно ли добавить алиас для библиотеки которая находиится в системных путях, в моем случае, это json-c.

Дело в том что я использую для сборки проекта MSYS2 и там при помощи пакетного менеджера pacman можно установить данную библиотеку, и она автоматически будет искаться при помощи find_package, в тоже время, я хочу собрать проект под линукс (Debian / Ubuntu /Linux Mint), а там при установке пакета libjson-c-dev нет файлов FIND для cmake.

Можно л как-то при помощи find_library найти и добавить алиас для данной библиотеки дабы не ломать структуру проекта CMAKE?


Ответы (2 шт):

Автор решения: user399842

Какая разница как устанавливать? Там поддержка cmake есть, просто собирай с помощью cmake и нужный файл сам станет в системе и с помощью него можно будет делать find_package

→ Ссылка
Автор решения: Egorithm

Если библиотека на CMake, и в ней есть модуль или конфиг, то искать намного проще через find_package(), он для того и создавался. В данном случае при конфигурировании будет сформирован конфиг-файл. Вам нужно только положить путь к инсталлированной библиотеке в CMAKE_PREFIX_PATH:

list(PREPEND CMAKE_PREFIX_PATH path/to/libdir)
find_package(lib_name [<version>] [REQUIRED] [COMPONENTS <list of components>])

Поиск <Libname>Config.cmake-файла будет осуществляться по следующим путям:

<prefix>/                                                       (W)
<prefix>/(cmake|CMake)/                                         (W)
<prefix>/<name>*/                                               (W)
<prefix>/<name>*/(cmake|CMake)/                                 (W)
<prefix>/(lib/<arch>|lib*|share)/cmake/<name>*/                 (U)
<prefix>/(lib/<arch>|lib*|share)/<name>*/                       (U)
<prefix>/(lib/<arch>|lib*|share)/<name>*/(cmake|CMake)/         (U)
<prefix>/<name>*/(lib/<arch>|lib*|share)/cmake/<name>*/         (W/U)
<prefix>/<name>*/(lib/<arch>|lib*|share)/<name>*/               (W/U)
<prefix>/<name>*/(lib/<arch>|lib*|share)/<name>*/(cmake|CMake)/ (W/U)
<prefix>/<name>.framework/Resources/                            (A)
<prefix>/<name>.framework/Resources/CMake/                      (A)
<prefix>/<name>.framework/Versions/*/Resources/                 (A)
<prefix>/<name>.framework/Versions/*/Resources/CMake/           (A)
<prefix>/<name>.app/Contents/Resources/                         (A)
<prefix>/<name>.app/Contents/Resources/CMake/                   (A)

W - Windows; U - UNIX (Linux); A - Apple


<prefix> - это путь из CMAKE_PREFIX_PATH.

<name> - это имя каталога библиотеки.

→ Ссылка