在Makefile.am中使用pkg-config变量的规范方法

时间:2013-10-13 12:46:08

标签: makefile autotools pkg-config m4

一堆项目foo-A-B,foo-B-C,foo-A-C等都依赖于foo-A,foo-B,foo-C等。

每个foo-X都会安装一个包含变量srcdir=@datarootdir@/foo/foo-B的pkg-config文件(foo-X.pc.in)。 foo-X-Y项目需要引用Xsrcdir和Ysrcdir中的文件。

目前我们在configure.ac中执行此操作:

PKG_CHECK_MODULES([foo_X], [foo-X])
AC_ARG_VAR(XSRC, "Source directory for foo-X")
AS_IF([test -z "$XSRC"], [XSRC=`pkg-config --variable=srcdir foo-X`])

(所以Makefile.am得到像compile "$XSRC"/file.bar $@这样的规则。这也允许开发人员在运行./configure。

时覆盖XSRC

我的问题:在autotools configury / makefiles中使用非标准pkg-config变量是否有更规范的方法?对于例如libdir,我看到pkg-config设置变量本身,所以除了PKG_CHECK_MODULES之外不需要configure.ac行;我们应该使用其他m4宏吗?

1 个答案:

答案 0 :(得分:1)

我知道这已经很晚了,但是因为最近有人在问我这件事,我觉得也值得回答这个问题。

您正在寻找的是PKG_CHECK_VAR,实际上大部分代码都可以替换为一行:

PKG_CHECK_VAR([XSRC], [foo-X], [srcdir], ,
  AC_MSG_FAILURE([Unable to find value for XSRC]))

错误消息不如PKG_CHECK_MODULES触发的错误消息明确,但如果未定义srcdir变量,也会触发错误消息。

我写了更多详细信息part of my Autotools Mythbuster