pkg-config
1.1、pkg-config简介
是什么 ?:a tool helps you insert the correct compiler options on the command line when compiling applications and libraries.
开发语言:C
官方主页:https://freedesktop.org/wiki/Software/pkg-config
源码仓库:https://gitlab.freedesktop.org/pkg-config/pkg-config
同类软件:pkgconf
1.2、通过包管理器安装pkg-config
操作系统包管理器安装命令
Windowsscoopscoop install pkg-config
macOSHomeBrewbrew install pkg-config
GNU/LinuxHomeBrewbrew install pkg-config
aptsudo apt-get install -y pkg-config
PCLinuxOSaptsudo apt-get install -y pkgconfig
CentOSyumsudo yum install -y pkgconfig
openSUSEzyppersudo zypper install -y pkg-config

Arch Linux

ArcoLinux

Manjaro Linux

yayyay -Syyu --noconfirm
yay -S    --noconfirm pkg-config-git
Gentoo LinuxPortagesudo emerge dev-util/pkgconfig
1.3、通过编译源码安装pkg-config
1.4、pkg-config命令

pkg-config命令的使用格式如下:

pkg-config [pkgName] <option>...
pkg-config <option>... [pkgName]
1.4.1、--help

查看pkg-config命令的使用帮助。

1.4.2、--version

查看pkg-config命令的版本号。

示例:

1.4.3、--list-all

列出所有扫描到的pkgName和对应的描述。

示例:

pkg-config --list-all | grep -i qt

运行效果如下:

1.4.4、pkgName

pkgName可以通过pkg-config --list-all | grep -i xx查询而获得。

实际上,每次执行pkg-config命令的时候,总是先去查找后缀名为.pc的配置文件, 文件名前缀就是pkgName

.pc配置文件的查找规则如下:

1、在/usr/lib目录下查找。

2、在PKG_CONFIG_PATH环境变量中的路径中查找。

PKG_CONFIG_PATH环境变量的配置方法与PATH环境变量完全一样,示例:

export PKG_CONFIG_PATH=/usr/local/opt/curl/lib/pkgconfig:$PKG_CONFIG_PATH
1.4.5、--debug

打印出详细的执行日志。

示例:

pkg-config --debug --list-all libcurl
1.4.6、--modversion

必须指定pkgName

查看指定pkgName的版本。

示例:

pkg-config --modversion libcurl

运行效果如下:

1.4.7、--exsits

必须指定pkgName

检测指定的pkgName是否存在。

示例:

pkg-config --exists libcurl && echo "libcurl exsits"
1.4.8、--cflags

必须指定pkgName

获取指定的pkgName-I-D-L参数。

示例:

pkg-config --cflags Qt5Core

运行效果如下:

1.4.9、--cflags-only-I

必须指定pkgName

获取指定的pkgName-I参数。

示例:

pkg-config --cflags-only-I Qt5Core

运行效果如下:

1.4.10、--cflags-only-other

必须指定pkgName

获取指定的pkgName-D-F参数。

示例:

pkg-config --cflags-only-other Qt5Core

运行效果如下:

1.4.11、--libs

必须指定pkgName

获取指定的pkgName-l-L-framework-F参数。

示例:

pkg-config --libs Qt5Core
pkg-config --libs ncurses

运行效果如下:

1.4.12、--libs-only-l

必须指定pkgName

获取指定的pkgName-l参数。

示例:

pkg-config --libs-only-l ncurses

运行效果如下:

1.4.13、--libs-only-L

必须指定pkgName

获取指定的pkgName-L参数。

示例:

pkg-config --libs-only-L ncurses

运行效果如下:

1.4.14、--libs-only-other

必须指定pkgName

获取指定的pkgName-F-framework参数。

示例:

pkg-config --libs-only-other Qt5Core

运行效果如下:

1.4.15、--print-variables

必须指定pkgName

获取指定的pkgNamepc文件中定义的变量。

示例:

pkg-config --print-variables Qt5Core

运行效果如下:

这是因为/usr/local/opt/qt/lib/pkgconfig/Qt5Core.pc文件中的定义如下:

prefix=/usr/local/Cellar/qt/5.13.0
exec_prefix=${prefix}
libdir=${prefix}/lib
includedir=${prefix}/lib/QtCore.framework/Headers

host_bins=${prefix}/bin
qt_config=shared qt_framework release c++11 c++14 concurrent dbus reduce_exports stl properties animation textcodec big_codecs codecs itemmodel proxymodel concatenatetablesproxymodel textdate datestring doubleconversion filesystemiterator filesystemwatcher gestures identityproxymodel library mimetype process statemachine regularexpression settings sharedmemory sortfilterproxymodel stringlistmodel systemsemaphore temporaryfile translation transposeproxymodel xmlstream xmlstreamreader xmlstreamwriter

Name: Qt5 Core
Description: Qt Core module
Version: 5.13.0
Libs: -F${libdir} -framework QtCore
Cflags: -DQT_CORE_LIB -I${includedir} -F${libdir}
1.4.16、--variable=KEY

必须指定pkgName

获取指定的pkgName中定义的KEY变量的值。

示例:

pkg-config --variable=prefix Qt5Core

运行效果如下: