抽象问题: 我正在编程一个高度模块化的中型C++/C程序。它有一个通用的接口,它允许你使用相同的函数声明放入许多不同的源,但是可以使用不同的实现并获得具有不同功能的可执行文件。有没有办法在Makefile中自动生成依赖关系树?
我正在制定一个可以处理建筑责任的制作系统。目前它能够根据配置文件的内容(用于make过程)获取专门的源代码,并将它们转储到具有适当通用名称的临时文件夹中。现在,我只需编译该项目。
问题是我有可变数量的源,并且源所依赖的头可以随个别实现而改变。换句话说,一个静态的makefile不会做到这一点。
'1.' 单独使用Makefile系统,有没有办法自动生成Main.cpp需要编译的对象(.o)文件列表?
我知道我可以通过编写一个我的makefile调用的小python脚本来做到这一点,随后通过解析检查它们的依赖关系的c文件来创建一个自定义makefile,从基础Main.cpp文件开始。
但我不想转向这个黑客解决方案,如果有更标准化的解决方案或某种方式来做这件事。
'2.'
如果makefile系统不能这样做,我应该继续使用自定义的python脚本,还是有更优雅的解决方案?
...............
要非常清楚,我再没有依赖性/资源/头/对象的名单不断,我不想迫使我的最终用户维护这样的清单。
我需要基于我的C文件的内容自动生成此树的某种方式。
如果这是一个“愚蠢”的问题,我很抱歉,我对制作世界比较陌生 - 并且像大多数人一样自学成才。
谢谢!
随时问任何问题。尽管如此,我的项目有太多的资料来源,只是将它们全部发布出来,而我因专有/研究原因无法这么做。
是否有一些不错的shell命令可用于查找源代码? – alternative 2011-04-19 23:13:36
要生成对象列表,是否足以扫描临时文件夹?也就是说,临时文件夹是否包含所有必须编译的源文件,而不是其他文件(现在不要在意头文件)。 – Beta 2011-04-19 23:59:52