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