2013-06-26 99 views
0

我有一个专有的构建实用程序,它可以在不同的目录中生成一堆对象和可执行文件。我想迁移到GNUmake。是否有任何工具可以解析先前构建的日志文件并构建makefile?迁移到GNUmake

+0

我不知道这样的工具。即使它可用,它也可能产生最愚蠢的结果:每个目标被硬编码为不同的显式规则,而不使用模式规则或变量来简化。 – MadScientist

+2

@MadScientist:公平的说,如果它足够聪明,可以推导出预期目标并推断先决条件(在一般情况下!),那么它肯定会足够聪明以简化自己的规则。它也可以作为一个很好的系统管理员。 – Beta

+1

我在想更多的东西,可以识别标准编译器格式('-o'后跟目标,加上标准的'-c'标志和源文件名如'xxx.c'或'xxx.cpp',并且可以将它转换为一个明确的规则,创建一个匹配各种编译器规则命令的正则表达式映射不会很长,我可能用不到20行的语言写正则表达式,再加上正则表达式(对不起,我是一个Perl的人)。 )更复杂的事情越想越难你想做的事情越多越好(匹配常见的编译命令来设置变量等) – MadScientist

回答

1

有没有一种简单的方法来做到这一点,主要是因为,我猜测,你的构建脚本就是这样的,脚本是以一种命令式的方式编写的,而make是声明式的(比如Prolog),它是思维方式的真正转变。

如果您使用的是GCC(我认为是GreenHills或Intel),您可以让编译器自动为您生成相关性信息。请参阅GCC手册中的-MD及相关选项。

这些可能会给你一些关于发生了什么的提示,但最终你只需要坐下来研究发生了什么并将其转化为make语法;该make manual实际上是相当不错的 - 只要确保你做一个heirarchical构建开始(即做使用make -C在你的Makefile),递归化妆系统使其几乎不可能可靠地跟踪依赖关系(我还没有看到一个)。