1

我想维护一个配置文件,该文件生成一组不同的 Makefile,这取决于给出的配置脚本的标志。更具体地说,我想make dist生成项目中所有目录的子集。

例如,假设我有project/a project/b, project/c包含 Makefile.am 的目录和所有其他必要的东西来启用使用./autogen.sh && ./configure && make. 现在,假设我想project/b project/c从分发 tarball 中省略目录。我尝试了以下方法:

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,它工作正常。

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

谢谢,

4

1 回答 1

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。

于 2013-04-08T10:31:32.813 回答