条件AC_OUTPUT

时间:2013-04-08 08:15:45

标签: distribution autotools autoconf

我想维护一个生成一组不同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没有变量,它可以正常工作。

任何想法如何使这项工作?

谢谢,

1 个答案:

答案 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。