在Makefile.am中使用pkg配置变量的规范方法

在Makefile.am中使用pkg配置变量的规范方法,makefile,autotools,pkg-config,m4,Makefile,Autotools,Pkg Config,M4,一组项目foo-A-B、foo-B-C、foo-A-C等。每个项目都依赖于foo-A、foo-B、foo-C等 每个foo-X安装一个pkg配置文件(foo-X.pc.in),其中包含一个变量srcdir=@datarootdir@/foo/foo-B。foo-X-Y项目需要引用Xsrcdir和Ysrcdir中的文件 目前,我们在configure.ac中这样做: PKG_CHECK_MODULES([foo_X], [foo-X]) AC_ARG_VAR(XSRC, "Source direc

一组项目foo-A-B、foo-B-C、foo-A-C等。每个项目都依赖于foo-A、foo-B、foo-C等

每个foo-X安装一个pkg配置文件(foo-X.pc.in),其中包含一个变量
srcdir=@datarootdir@/foo/foo-B
。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可以使用类似于
编译“$XSRC”/file.bar$@
的规则)。这还允许开发人员在运行./configure时覆盖XSRC


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

我知道现在已经很晚了,但最近有人问我这件事,我想这也值得回答

您要查找的是
PKG\u CHECK\u VAR
,实际上,大多数代码都可以用一行代码替换:

PKG_CHECK_VAR([XSRC], [foo-X], [srcdir], ,
  AC_MSG_FAILURE([Unable to find value for XSRC]))
该错误消息比由
PKG\u CHECK\u MODULES
触发的消息稍不清晰,但如果未定义
srcdir
变量,也会触发该错误消息


我写了更多的细节。

我知道这已经很晚了,但因为最近有人问我这件事,我想这也值得回答

您要查找的是
PKG\u CHECK\u VAR
,实际上,大多数代码都可以用一行代码替换:

PKG_CHECK_VAR([XSRC], [foo-X], [srcdir], ,
  AC_MSG_FAILURE([Unable to find value for XSRC]))
该错误消息比由
PKG\u CHECK\u MODULES
触发的消息稍不清晰,但如果未定义
srcdir
变量,也会触发该错误消息


我写了更多的细节。

我很想理解你对foo-X、srcdir、XSRC的意思,这很难举例说明吗?XSRC只是你给变量起的一个名字,可以是任何东西。foo-X是您要查找的包的名称。我刚刚从原来的问题中复制了这些。我很想理解你对foo-X,srcdir,XSRC的意思,这很难举例说明吗?XSRC只是你给变量起的一个名字,可以是任何东西。foo-X是您要查找的包的名称。我刚刚从原来的问题中复制了这些内容。