Измените PKG_CONFIG_PATH pkg-config в MinGW

Я хочу изменить каталог, в котором pkg-config ищет .pr файлов. Я использую pkg-config под MinGW в Windows. Я обнаружил, что это можно сделать, изменив переменную среды PKG_CONFIG_PATH с помощью export PKG_CONFIG_PATH=[path]. Файлы .pr, которые я хочу найти с помощью pkg-config, установлены не в каталоге MinGW, а где-то в «обычной» файловой системе Windows (C:\Program Files (x86)\Gtk+\lib\pkgconfig).

Теперь к моей проблеме: если я запускаю export PKG_CONFIG_PATH="/c/Program Files (x86)/Gtk+/lib/pkg-config/, а затем запускаю pkg-config --cflags gtk+-win32-2.0, я получаю следующий вывод.

$ pkg-config --cflags gtk+-win32-2.0 --debug
Option --debug seen
Error printing enabled by default due to use of --version, --libs, --cflags, --libs-only-l, --libs-only-L, --libs-only-other, --cflags-only-I, --cflag
s-only-other or --list. Value of --silence-errors: 0
Error printing enabled
Adding virtual 'pkg-config' package to list of known packages
Cannot open directory 'c' in package search path: No such file or directory
Cannot open directory '/Program Files (x86)/Gtk+/lib/pkgconfig/' in package search path: No such file or directory
Scanning directory '/usr/lib/pkgconfig'
Ignoring file '.' in search directory; not a .pc file
Ignoring file '..' in search directory; not a .pc file

и Т. Д.

Итак, как мне указать путь к файлам .pr, чтобы pkg-config мог их найти? Это не проблема, если я устанавливаю файлы .pr в каталог MinGW, они находятся без изменения переменной среды.


person simon    schedule 22.03.2012    source источник


Ответы (1)


Нет, вы должны использовать $(GTK_COMPILE) в целевом Makefile main.o вместо $(GTK_LINK). $(GTK_COMPILE) вызывает pkg-config --cflags, который возвращает CFLAGS, необходимые для компиляции (расположение файлов заголовков). LIBS, которые вам нужны для компоновки, а не для компиляции

person axel_c    schedule 22.03.2012
comment
Спасибо за ответ. Глупая ошибка. Однако после исправления я все равно получаю ту же ошибку. Если я ввожу pkg-config --cflags gtk+-2.0, все каталоги, в которых ищутся файлы заголовков, находятся в /usr/include/. Я хотел бы изменить это на пользовательский каталог. Можете ли вы сказать мне, как это сделать? - person simon; 22.03.2012
comment
Это не самый чистый подход, но, может быть, вы могли бы просто отредактировать файл .pc вручную, чтобы пути указывали на нужное место? - person axel_c; 22.03.2012
comment
Проблема в том, что я не уверен, какие .pc файлы на самом деле используются. Я пытался изменить файлы в папке C:\Program Files (x86)\Gtk+\lib\pkgconfig, но безрезультатно. Затем я проверил вывод pkg-config с флагом --debug, и там сказано, что он не может открыть мой каталог, указанный в переменной PKG_CONFIG_PATH. Если я набираю echo $PKG_CONFIG_PATH, MinGW выдает /c/Program Files (x86)/Gtk+/lib/pkgconfig/. Я могу cd перейти в этот каталог, но pkg-config по какой-то причине не могу его открыть. - person simon; 22.03.2012
comment
Может из-за пробелов в пути? Некоторые программы могут некорректно работать с ними. Попробуйте изменить PKG_CONFIG_PATH, чтобы заменить пробелы на \ (это \ плюс пробел), и посмотрите, поможет ли это. - person axel_c; 22.03.2012
comment
Я тоже так пробовал, но безрезультатно. эхо PKG_CONFIG_PATH после его установки с помощью \ вместо дает тот же результат, что и выше (с пробелами). - person simon; 22.03.2012
comment
Вы можете вставить вывод запуска pkg-config с --debug? - person axel_c; 22.03.2012
comment
Я обновил свой первоначальный вопрос выводом отладки. По сути, теперь стал вопрос, можно ли вообще добавить пути вне каталога MinGW в переменную PKG_CONFIG_PATH. - person simon; 22.03.2012
comment
Он задыхается от /c, посмотрите, как он интерпретирует его как отдельный каталог. Я не использовал cygwin целую вечность, но разве вы не должны были использовать /cygdrive/c или что-то в этом роде для доступа к «обычной» файловой системе Windows? - person axel_c; 22.03.2012
comment
Вот к чему сводится вопрос. Я изменил PKG_CONFIG_PATH на /cygdrive/c/, а результат отладки — Cannot open directory C:/MinGW/msys/1.0/cygdrive/c/ in package search path: No such file or directory. Поэтому я предполагаю, что должен быть какой-то другой способ доступа к обычным файлам/каталогам Windows. - person simon; 22.03.2012