【发布时间】:2011-04-19 22:55:54
【问题描述】:
抽象问题: 我正在编写一个高度模块化的中型 C++/C 程序。它有一个通用接口,允许您使用相同的函数声明、但不同的实现放入许多不同的源代码,并获得具有不同功能的可执行文件。
我正在开发一个可以处理构建职责的 make 系统。目前,它能够根据配置文件的内容(用于制作过程)获取专门的资源,并将它们转储到具有适当通用名称的临时文件夹中。现在,我只需要编译项目。
问题是我有可变数量的源,并且源所依赖的标头可以随着各个实现而改变。换句话说,静态 makefile 无法解决问题。
'1.' 单独使用 Makefile 系统,有没有办法自动生成 Main.cpp 需要编译的对象 (.o) 文件列表?
我知道我可以通过编写一个我的 makefile 调用的小 python 脚本来做到这一点,该脚本随后通过解析 c 文件检查它们的依赖关系来创建一个自定义 makefile,从基本 Main.cpp 文件开始。
但如果有更标准化的解决方案或在 make 中执行此操作的某种方法,我不想求助于这种骇人听闻的解决方案。
'2.'
如果 makefile 系统无法做到这一点,我应该继续使用我的自定义 python 脚本,还是有更优雅的解决方案?
.......
为了完全清楚,我没有依赖项/源/标头/对象的恒定列表,我不想强迫我的最终用户维护这样的列表。
我需要某种方式来根据我的 C 文件的内容自动生成这棵树。
抱歉,如果这是一个“愚蠢”的问题,我对 make 世界还比较陌生——而且和大多数人一样,我是自学成才的。
谢谢!
请随时提出任何问题。
仅供参考,不过,我的项目有太多资源,无法全部发布,而且出于专有/研究原因,我不能这样做。
【问题讨论】:
-
是否有一些不错的 shell 命令可以用来查找源代码?
-
为了生成对象列表,扫描临时文件夹就足够了吗?也就是说,临时文件夹是否包含所有必须编译的源代码,而不包含其他源代码(暂时不用考虑标题)。
标签: python c makefile compilation