2009-07-22 72 views
0

我有一个非常复杂的(C++)项目使用autoconf/automake,其中包括一些“生成”文件(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做时间戳检查/可理解的错误消息?

回答

0

从Automake的手册8.8:

通过‘ ’ YACC(或‘ ’法)生成的中间文件将被包括在由任何发行 。这样用户不需要 需要‘ yacc ’或‘ lex ’。

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

+0

如果您执行“make dist”,然后将* that *分配给目标并从分发构建包。但是在这种情况下,并不是这样做的,二进制文件是直接从CVS中构建的... 查看编辑的问题 - 这对我个人来说已经不是问题了。 – DevSolar 2009-07-28 11:56:39

相关问题