pkg-config: нейтральный для платформы способ узнать, где установить мой.файл ПК?
Как узнать, где установить мой .pc? Эти файлы помещаются в разных местах на разных операционных системах. Цель состоит в том, чтобы иметь возможность использовать что-то вроде $(INSTALL) mylib.pc $$(pkg-config --pcdir)
в установите цель. Я думал pkg-config
мог бы как-то сказать мне, но ничего не могу найти.
Я ищу "автономное" решение, используемое в обычном Makefile (не должно требовать поддержки autotools или аналогичного).
4 ответов
обновление: очевидно, теперь есть способ сделать это:
pkg-config --variable pc_path pkg-config
найти в этой сообщить об ошибке (см. комментарий #4). Появится текущая страница man для документирования этого.
оригинальный ответ:
ужасное хакерское решение (предполагая оболочку Борна):
pkg-config --debug 2>&1 |grep Scanning | sed -e 's/Scanning directory //' -e "s/'//g"
это может дать вам более одного местоположения.
редактировать @just somebody
короче версия
pkg-config --debug 2>&1 | sed -ne '/Scanning directory /s///p'
и остановиться после первого каталога:
pkg-config --debug 2>&1 | sed -ne '/Scanning directory /{s///p;q;}'
Он должен перейти в ${libdir}/pkgconfig (т. е. ${prefix}/lib / pkgconfig)
в основном, если вы устанавливаете библиотеки, и они идут в ${libdir}, то ваш .файл ПК должен быть в ${libdir} / pkgconfig и нигде больше.
к сожалению, на складе pkg-config
установка (для версии 0.23), нет способа извлечь "путь к ПК" по умолчанию, кроме запуска strings
на двоичном файле (например,strings /usr/bin/pkg-config | grep '/usr/.*/pkgconfig'
).
если вы можете установить пользовательскую сборку, просто исправьте ее, чтобы записать значение PKG_CONFIG_PC_PATH
при запуске с подходящим вариантом.
другой вариант, который, вероятно, не поможет вам (но я бы все равно упомянул для полноты), - установить PKG_CONFIG_PATH
переменные среды, когда зову pkg-config
.