Я собрал libpng с помощью CMake и добавил сгенерированный файл .pc
в каталог pck-config.
Проекты, для которых требуется libpng, не собираются, потому что pkg-config предоставляет неправильные пути при вызове, например pkg-config --cflags libpng
Отладочный вывод:
$ pkg-config.exe --debug libpng
no output option set, defaulting to --exists
Error printing disabled by default due to use of output options --exists, --atleast/exact/max-version, --list-all or no output option at all. Value of --print-errors: 0
Error printing disabled
Adding virtual 'pkg-config' package to list of known packages
Looking for package 'libpng'
Looking for package 'libpng-uninstalled'
Reading 'libpng' from file 'C:\mingw64\mingw64\lib\pkgconfig\libpng.pc'
Parsing package file 'C:\mingw64\mingw64\lib\pkgconfig\libpng.pc'
line>prefix=C:/Program Files (x86)/libpng
Variable declaration, 'prefix' overridden with 'C:/mingw64/mingw64'
line>exec_prefix=C:/Program Files (x86)/libpng
Variable declaration, 'exec_prefix' has value 'C:/Program Files (x86)/libpng'
line>libdir=C:/Program Files (x86)/libpng/lib
Variable declaration, 'libdir' has value 'C:/mingw64/mingw64/lib'
line>includedir=C:/Program Files (x86)/libpng/include/libpng16
Variable declaration, 'includedir' has value 'C:/mingw64/mingw64/include/libpng16'
line>
line>Name: libpng
line>Description: Loads and saves PNG files
line>Version: 1.6.37
line>Requires: zlib
line>Libs: -L${libdir} -lpng16
line>Libs.private: -lz -lm
Unknown keyword 'Libs.private' in 'C:\mingw64\mingw64\lib\pkgconfig\libpng.pc'
line>Cflags: -I${includedir}
Path position of 'libpng' is 3
Adding 'libpng' to list of known packages
В руководстве указано:
Особенности Windows
Если файл .pc найден в каталоге, который соответствует обычным соглашениям (т. е. заканчивается на \lib\pkgconfig), предполагается, что префикс для этого пакета является прародителем каталога, в котором был найден файл, а переменная префикса соответственно переопределяется для этого файла.
Однако у меня нет ${prefix}
в файле .pc
. Я понятия не имею, откуда берутся замены и как их исправить. Сообщается, что переопределено только prefix
, остальное сообщается как «имеющее значение», но напечатанные пути не являются теми, что объявлены в файле, они даже не существуют.