为什么运行脚本时无法识别 makefile 中的 pkg-config 命令?

为什么运行脚本时无法识别 makefile 中的 pkg-config 命令?

我正在尝试在 Debian 虚拟机上为开源项目运行 make,但我不明白为什么基于的命令pkg-config未被识别。

其中一条命令如下:

tempgui-qrps.so: tempgui-qrps.cc refpersys.hh tempgui-qrps.hh tempgui-qrps.moc.hh | $(RPS_CORE_OBJECTS)
    $(RPS_BUILD_CXX) $(RPS_BUILD_COMPILER_FLAGS) \
                         -shared -o $@ -fPIC -Wall -Wextra -O -g \
                  $(shell pkg-config --cflags Qt5Core Qt5Gui Qt5Widgets $(RPS_PKG_NAMES)) \
                  $(shell pkg-config --libs Qt5Core Qt5Gui Qt5Widgets $(RPS_PKG_NAMES)) \
                      -std=gnu++17 \
    $<

当我在命令行上运行 make 时,与上述命令对应的输出如下所示:

g++ -std=gnu++17 \                          
    -shared -o tempgui-qrps.so -fPIC -Wall -Wextra -O -g \                
                                  \                
                                   \                      
                                    -std=gnu++17 \ 
tempgui-qrps.cc 

当我运行 make 命令时,我还看到这些警告:

Package readline was not found in the pkg-config search path.
Perhaps you should add the directory containing `readline.pc'
to the PKG_CONFIG_PATH environment variable
No package 'readline' found
Package zlib was not found in the pkg-config search path.
Perhaps you should add the directory containing `zlib.pc'
to the PKG_CONFIG_PATH environment variable
No package 'zlib' found

这两个问题(缺少软件包和pkg-config未处理命令)是否相关?

我的系统上安装的一些详细信息pkg-config如下:

xxxxx@xxxx:~$ pkg-config --version
0.29

xxxx@xxxx:~$ whereis pkg-config
pkg-config: /usr/bin/pkg-config /usr/lib/pkg-config.multiarch /usr/share/man/man1/pkg-config.1.gz

答案1

拥有pkg-config还不够:您还需要.pc与每个命令中指定的包相对应的文件pkg-config

因为pkg-config --cflags Qt5Core Qt5Gui Qt5Widgets $(RPS_PKG_NAMES),您需要安装qtbase5-dev以及 中的软件包所需的任何内容$(RPS_PKG_NAMES)。您可以安装并使用apt-file来查找包含特定文件的包。

对于readlinezlib,您需要libreadline-devzlib1g-dev。此外,readline.pc如果您使用的是 Debian 10,则需要创建;将其放入/usr/local/lib/pkgconfig,内容如下:

prefix=/usr
exec_prefix=${prefix}
libdir=/usr/lib/x86_64-linux-gnu
includedir=${prefix}/include

Name: Readline
Description: Gnu Readline library for command line editing
URL: http://tiswww.cwru.edu/php/chet/readline/rltop.html
Version: 7.0
Requires.private: tinfo

(为了amd64)。

pkg-config您可以从 shell运行各种命令来检查它们是否正常工作,并获取有关每个错误的信息。

相关内容