将生成的文件添加到分发的最佳方法?

时间:2009-07-22 09:49:22

标签: bison packaging flex-lexer autoconf automake

我有一个使用autoconf / automake的非常复杂的(C ++)项目,其中包含一些“生成”文件(foo.yy - > foo.cc)。在各种平台上,使用“控制脚本”(Gentoo .ebuild,熟悉这个概念的人)完成实际构建。

现在,其中一个目标平台没有正确支持foo.yy - > foo.cc步骤,并且必须使用在Linux机器上生成的foo.cc文件。

现在我有两种方法可以解决这个问题:

1)将foo.cc检入项目存储库并以某种方式修补configure.in(或其他)以在foo.yy / foo.cc中包含时间戳检查,如果在相关目标上运行则生成可理解的错误消息有一个过时的foo.cc;

2)将foo.cc签入控制脚本存储库,并使用脚本控制时间戳并提供错误消息。

我能做到2)没问题,但我不认为这是放置foo.cc的正确位置。

另一方面,我对autoconf / automake了解不多,也不知道如何在configure.in(或whereever)中实现时间戳检查/错误消息。

您有什么建议,这里的任何人都知道如何解决方案1)?

编辑使用解决方案3解决,调整有问题的目标框,直到它能够执行foo.yy - > foo.cc步骤本身。 我的问题已解决。

但是我会把问题打开 - 如何使用autoconf / automake进行时间戳检查/可理解的错误消息?

1 个答案:

答案 0 :(得分:0)

从Automake手册中的8.8开始:

  

'yacc'(或'lex')生成的中间文件将是   包含在任何分发中。这样用户就没有   需要'yacc'或'lex'。

这听起来好像你描述的问题不应该存在。