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