是什么 ? | : | 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 |
操作系统 | 包管理器 | 安装命令 |
---|---|---|
Windows | scoop | scoop install pkg-config |
macOS | HomeBrew | brew install pkg-config |
GNU/Linux | HomeBrew | brew install pkg-config |
apt | sudo apt-get install -y pkg-config | |
PCLinuxOS | apt | sudo apt-get install -y pkgconfig |
CentOS | yum | sudo yum install -y pkgconfig |
openSUSE | zypper | sudo zypper install -y pkg-config |
yay | yay -Syyu --noconfirm | |
Gentoo Linux | Portage | sudo emerge dev-util/pkgconfig |
pkg-config
命令的使用格式如下:
pkg-config [pkgName] <option>
...
pkg-config <option>... [pkgName]
查看pkg-config
命令的使用帮助。
查看pkg-config
命令的版本号。
示例:
列出所有扫描到的pkgName
和对应的描述。
示例:
pkg-config --list-all | grep -i qt
运行效果如下:
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
打印出详细的执行日志。
示例:
pkg-config --debug --list-all libcurl
必须指定pkgName
。
查看指定pkgName
的版本。
示例:
pkg-config --modversion libcurl
运行效果如下:
必须指定pkgName
。
检测指定的pkgName
是否存在。
示例:
pkg-config --exists libcurl && echo "libcurl exsits"
必须指定pkgName
。
获取指定的pkgName
的-I
、-D
、-L
参数。
示例:
pkg-config --cflags Qt5Core
运行效果如下:
必须指定pkgName
。
获取指定的pkgName
的-I
参数。
示例:
pkg-config --cflags-only-I Qt5Core
运行效果如下:
必须指定pkgName
。
获取指定的pkgName
的-D
、-F
参数。
示例:
pkg-config --cflags-only-other Qt5Core
运行效果如下:
必须指定pkgName
。
获取指定的pkgName
的-l
、-L
、-framework
、-F
参数。
示例:
pkg-config --libs Qt5Core
pkg-config --libs ncurses
运行效果如下:
必须指定pkgName
。
获取指定的pkgName
的-l
参数。
示例:
pkg-config --libs-only-l ncurses
运行效果如下:
必须指定pkgName
。
获取指定的pkgName
的-L
参数。
示例:
pkg-config --libs-only-L ncurses
运行效果如下:
必须指定pkgName
。
获取指定的pkgName
的-F
、-framework
参数。
示例:
pkg-config --libs-only-other Qt5Core
运行效果如下:
必须指定pkgName
。
获取指定的pkgName
的pc
文件中定义的变量。
示例:
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}
必须指定pkgName
。
获取指定的pkgName
中定义的KEY
变量的值。
示例:
pkg-config --variable=prefix Qt5Core
运行效果如下: