Страницы

Поиск по вопросам

пятница, 14 июня 2019 г.

Как добавить pkgconfig в CMakeLists.txt

Хочу заменить часть скриптов на Python более быстрыми аналогами на C++. В первую очередь интересует SAX парсеры из libxml++-3.0 В дистрибутиве есть папка examples. Скомпилировать все примеры сразу получилось командой make check. Теперь нужно открыть содержимое examples/sax_parser в какой-нибудь IDE и запускать оттуда. Как выяснилось, это можно сделать десятками способов и все они нетривиальные. В README к библиотеке упомянута только команда
$ pkg-config libxml++-3.0 --cflags --libs -I/usr/local/include/libxml++-3.0 -I/usr/local/lib/libxml++-3.0/include -I/usr/include/libxml2 -I/usr/include/glibmm-2.4 -I/usr/lib/x86_64-linux-gnu/glibmm-2.4/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/sigc++-2.0 -I/usr/lib/x86_64-linux-gnu/sigc++-2.0/include -L/usr/local/lib -lxml++-3.0 -lxml2 -lglibmm-2.4 -lgobject-2.0 -lglib-2.0 -lsigc-2.0
Как записать результат её выполнения во что-нибудь вроде CMakeLists.txt?


Ответ

Если нужно именно добавить вывод pkg-config в cmake проект: У Cmake есть модуль PkgConfig, который запускает и парсит вывод одноименной утилиты
find_package(PkgConfig) pkg_search_module(LIBXML REQUIRED libxml++-3.0)
Вторая строка запишет в переменные все нужные данные(каталоги с хидерами, каталоги с библиотеками, флаги, список библиотек для линковки и т.д.) Теперь просто используй переменные для указания всего нужного:
include_directories(${LIBXML_INCLUDE_DIRS}) compile_options(app_name ${LIBXML_CFLAGS} link_libraries(app_name ${LIBXML_LIBRARIES}
Писал по памяти, может где неправильно что, поищи документацию FindPkgConfig

Комментариев нет:

Отправить комментарий