0

我有一个使用 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 (或任何地方)中实现时间戳检查 / 错误消息。

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

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

但我会留下这个问题 - 如何使用 autoconf / automake 进行时间戳检查 / 可理解的错误消息?

4

1 回答 1

0

从 Automake 手册中的 8.8 开始:

由“yacc”(或“lex”)生成的中间文件将包含在任何发布的发行版中。这样用户就不需要'yacc'或'lex'。

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

于 2009-07-28T09:58:31.360 回答