PKG_PROG_PKG_CONFIG 是 GNU Autoconf 的一个宏,用于在 configure 脚本中检测系统是否安装了 pkg-config 工具,并设置相关变量(如 PKG_CONFIG)供后续使用。
作用
- 检查 pkg-config 是否存在:
在运行 ./configure 时,它会检查系统中是否安装了 pkg-config 工具。 - 设置 PKG_CONFIG 变量:
如果找到 pkg-config,会将其路径存储在 PKG_CONFIG 变量中,后续可以通过 $PKG_CONFIG 调用它。 - 可选指定最低版本:
可以传递一个版本号参数,确保 pkg-config 符合最低版本要求。
基本用法
在 configure.ac 文件中添加:
PKG_PROG_PKG_CONFIG
如果需要检查特定版本(如 ≥ 0.29):
PKG_PROG_PKG_CONFIG([0.29])
相关宏
PKG_CHECK_MODULES:用于检查并获取某个库的编译和链接标志(如 PKG_CHECK_MODULES([GLIB], [glib-2.0]))。
PKG_CHECK_EXISTS:检查某个库是否存在(但不设置变量)。
示例 ★
AC_INIT([myapp], [1.0])
PKG_PROG_PKG_CONFIG([0.29]) # 检查 pkg-config 是否存在,且版本 ≥ 0.29
PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.50]) # 检查 glib2 是否存在
AC_CONFIG_FILES([Makefile])
AC_OUTPUT
常见问题
- 如果 pkg-config 未安装:
./configure 会报错并退出,提示需要安装 pkg-config。 - 如何手动指定 pkg-config 路径:
可以通过环境变量覆盖检测结果:PKG_CONFIG=/path/to/pkg-config ./configure
总结
- PKG_PROG_PKG_CONFIG 用于确保 pkg-config 可用,是使用 PKG_CHECK_MODULES 等宏的前提。
- 推荐在 configure.ac 中尽早调用它,以便后续依赖检查能正常工作。
如果你的项目依赖第三方库(如 GLib、GTK、OpenSSL 等),这个宏是必不可少的。