Как исправить ошибки поиска библиотек в cmake?

Пытаюсь разобраться с cmake для автоматизации сборки кросплатформенных приложений. Дошел до использования сторонних библиотек и столкнулся со следующей проблемой.

Пример на гитхабе. В качестве примера был взят код с Curl, который прекрасно компилируется и работает.

Составил CMakeLists.txt для данного проекта. И попытался собрать, сборку для тестов провожу в 2-х системах FreeBSD 10 и Fedora 21. И наткнулся на проблему с поиском библиотек. Сломал за 3 дня поиска голову, но проблему так и не решил.

Попытка сборки в Fedora выдает ошибку поиска библиотеки.
CMake Error at /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:136 (message):
  Could NOT find LibXml2 (missing: LIBXML2_LIBRARIES LIBXML2_INCLUDE_DIR)
Call Stack (most recent call first):
  /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:343 (_FPHSA_FAILURE_MESSAGE)
  /usr/share/cmake/Modules/FindLibXml2.cmake:69 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
  CMakeLists.txt:9 (find_package)

При этом плагин поиска FindLibXml2.cmake лежит в положенном ему месте. Но не находит.

Под FreeBSD 10 эта же операция ошибки не выдает и создает Makefile, который не работает. При поиске проблем обнаружил, что поиск библиотеки в переменную LIBXML2_INCLUDE_DIRS вместо правильного пути (/usr/local/include/libxml2/) записывает следующий /usr/local/include/usr/include/usr/include

И при попытке сборки полученным Makefile получаем ошибку о невозможности найти заголовочные файлы в указанных директориях. Если вручную переписать значение LIBXML2_INCLUDE_DIRS, то сформированный Makefile прекрасно собирает программу.

После столь долгого и, прошу прощения, сумбурного объяснения два вопроса.

1. Кто виноват? (как понимаю, неправильные модули поиска библиотеки LibXml2 для cmake?)
2. Что делать? (как обеспечить "безпроблемную" сборку на разных системах, ведь подобные глюки могут проявляться на разных ОС и с разными библиотеками? Все не проверить, и я как раз по этой причине и хочу использовать cmake)?
  • Вопрос задан
  • 847 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы