我们使用automake
& autoconf
来构建我们的多软件包软件。我想知道如何用例如输出来填充一个变量。 shell脚本一次并重新使用,例如对于需要include目录仅评估automake变量一次
INCLUDES := -I`some-ext-config --incdir`
使用的:=
代替=
这里使这个变量填写一次,以便将some-ext-config
只被调用一次(据我所知这是来自普通make
)。当然INCLUDES
是AM_CPPFLAGS
的折旧表弟,但是我是否会使用那个表示脚本,因此每个编译都会调用shell脚本。
使用INCLUDES
而不是AM_CPPFLAGS
对我来说是一个可接受的解决方案(虽然我想可能存在可移植性问题),但我没有解决方案。 LDFLAGS了libtool的库
libmylib_la_LDFLAGS := `some-ext-config --ldflags` # will always be evaluated
里面是什么automake
一般的解决办法,如果我要确保这些外部工具不能调用多次?我想远离在configure.ac
中使用明显的AC_SUBST
,因为我们必须确保我们的软件包可以从子目录(在那里有一些configure.ac
)和从顶级递归make和configure.ac
那里生成,不需要太多了解不同的子项目。
嗯,我写了,我想远离将它放到'configure.ac'中出于某些外部原因。 – 2012-03-11 22:48:54
@honk:那么您将不得不解决这些外部原因(例如使用'AC_CONFIG_SUBDIRS')或放弃编写便携式Makefiles。 – adl 2012-03-12 07:30:26
外部原因是我们希望能够在顶层Makefile.am文件中为子目录Makefile添加AC_OUTPUT,但不需要在每个子目录中调用configure,只要我们的构建)。我们只需要可移植到GNU make,我是否正确理解没有办法只填充一次这些automake变量? – 2012-03-12 12:11:05