Почему pkg-config переопределяет префикс другим по умолчанию? - PullRequest
0 голосов
/ 21 сентября 2018

У меня проблема с использованием pkg-config для связи некоторых библиотек с программой.Проблема в том, что переменная 'prefix' в каждой библиотеке. Файлы pkg-config (* .pc) переопределяются нежелательным каталогом, приводящим к созданию программы, которая не может найти заголовок библиотеки и файлы lib.

Здесь один изФайлы * .pc, x264.pc:

prefix=/e/x264/x64-windows-rel  
exec_prefix=${prefix}   
libdir=${exec_prefix}/lib   
includedir=${prefix}/include    
...

Я запускаю это с терминала MSYS2:

pkg-config --cflags --debug x264

Вот некоторые из выводимых им данных:

...
 Parsing package file 'D:/msys64/usr/local/lib/pkgconfig\x264.pc'
 line>prefix=/e/x264/x64-windows-rel
 Variable declaration, 'prefix' overridden with 'D:/msys64/usr/local'
...

Обратите внимание, что MSYS2 и pkg-config обновлены до новейших версий.

Может кто-нибудь сказать мне, почему это происходит и как решить проблему, не переименовывая префикс в другое.?Спасибо.

1 Ответ

0 голосов
/ 22 сентября 2018

Похоже, что ваш pkg-config был скомпилирован с опцией --enable-define-prefix (для целей Windows выглядит по умолчанию), а ваш файл .pc находится в каталоге с именем pkgconfig (D:/msys64/usr/local/lib/pkgconfig\x264.pc).Кстати, почему файл .pc установлен в D:/msys64/usr/local/lib/pkgconfig, а библиотеки установлены в другом месте?

Вот цитата из справочной страницы pkg-config:

    --define-prefix
          --dont-define-prefix  These  options  control whether pkg-config
          overrides the value of the variable prefix  in  each  .pc  file.
          With  --define-prefix, pkg-config uses the installed location of
          the .pc file to determine the prefix. --dont-define-prefix  pre-
          vents this behavior. The default is usually --define-prefix.

          When this feature is enabled and a .pc file is found in a direc-
          tory named pkgconfig, the prefix for that package is assumed  to
          be  the  grandparent  of the directory where the file was found,
          and the prefix variable is overridden for that file accordingly.

          If  the value of a variable in a .pc file begins with the origi-
          nal, non-overridden, value of  the  prefix  variable,  then  the
          overridden value of prefix is used instead. This allows the fea-
          ture to work even when the variables have been expanded  in  the
          .pc file.

Так что вы можете отключить это поведение с помощью *Опция 1010 *.

Страница руководства pkg-config (исходный код)

Страница руководства pkg-config (отображается)

PS MSYS2 имеет несколько пакетов pkg-config.И вы должны использовать mingw64/mingw-w64-x86_64-pkg-config или mingw32/mingw-w64-i686-pkg-config.НЕ используйте msys/pkg-config.

...