PKG_PROG_PKG_CONFIG 是 GNU Autoconf 的一个宏,用于在 configure 脚本中检测系统是否安装了 pkg-config 工具,并设置相关变量(如 PKG_CONFIG)供后续使用。

作用

  1. 检查 pkg-config 是否存在:
    在运行 ./configure 时,它会检查系统中是否安装了 pkg-config 工具。
  2. 设置 PKG_CONFIG 变量:
    如果找到 pkg-config,会将其路径存储在 PKG_CONFIG 变量中,后续可以通过 $PKG_CONFIG 调用它。
  3. 可选指定最低版本:
    可以传递一个版本号参数,确保 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 等),这个宏是必不可少的。