我有一个使用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进行时间戳检查/可理解的错误消息?
答案 0 :(得分:0)
从Automake手册中的8.8开始:
'yacc'(或'lex')生成的中间文件将是 包含在任何分发中。这样用户就没有 需要'yacc'或'lex'。
这听起来好像你描述的问题不应该存在。