我想维护一个生成一组不同Makefile的配置文件,这取决于给出配置脚本的标志。更具体地说,我希望make dist
生成项目中所有目录的子集。
例如,假设我有Makefile.am的目录project/a project/b, project/c
和所有其他必要的东西,以便使用./autogen.sh && ./configure && make
来编译项目。现在,假设我想从分发tarball中省略目录project/b project/c
。我尝试了以下方法:
AS_IF([test "x$for_dist" == "xyes"],
[CONDITIONAL_MAKEFILES=""],
[CONDITIONAL_MAKEFILES="b/Makefile c/Makefile"]
)
AC_OUTPUT(Makefile a/Makefile ${CONDITIONAL_MAKEFILES})
这不起作用,我得config.status: error: cannot find input file: b/Makefile.in
。如果我指定输出Makefiles没有变量,它可以正常工作。
任何想法如何使这项工作?
谢谢,
答案 0 :(得分:1)
我找到了解决方案 -
使用AC_CONFIG_FILES
而不是AC_OUTPUT
可以提高灵活性。例如,参考上面的例子:
AS_IF([test "x$for_dist" == "xyes"], [AC_CONFIG_FILES(b/Makefile c/Makefile)] )
AC_OUTPUT(Makefile a/Makefile)
如果for_dist
的值为yes
,则会输出三个Makefile,否则只输出一个Makefile。