Алиас для библиотеки
Хотелось бы узнать, можно ли добавить алиас для библиотеки которая находиится в системных путях, в моем случае, это json-c.
Дело в том что я использую для сборки проекта MSYS2 и там при помощи пакетного менеджера pacman можно установить данную библиотеку, и она автоматически будет искаться при помощи find_package, в тоже время, я хочу собрать проект под линукс (Debian / Ubuntu /Linux Mint), а там при установке пакета libjson-c-dev нет файлов FIND для cmake.
Можно л как-то при помощи find_library найти и добавить алиас для данной библиотеки дабы не ломать структуру проекта CMAKE?
Ответы (2 шт):
Какая разница как устанавливать? Там поддержка cmake есть, просто собирай с помощью cmake и нужный файл сам станет в системе и с помощью него можно будет делать find_package
Если библиотека на 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> - это имя каталога библиотеки.