我有一个很大的代码库,可以使用旧的自定义构建系统构建,使用大量的bash脚本和简单的Makefile共同组合拼凑在一起。
如何使用现代版本的GNU make重新构建构建系统? (或其他一些工具。)
代码库很大,分成许多子目录,并且具有非平凡的跨子文件夹依赖性和系统库链接要求。
由于我可以使用当前构建系统构建一组启用调试的可执行文件,是否有任何方法可以反省这些文件构建一组新的构建和链接规则?
谢谢
答案 0 :(得分:3)
没有任何魔法会为你解开这个构建系统。清理它将需要缓慢,细致的工作(自然地进行测试)。
如果您还没有,请在GNUMake下开始运行makefile。逐渐清理它们,合并它们,将bash脚本的功能吸收到它们中。绘制这些“非平凡的跨子文件夹依赖关系”;看看Make如何处理依赖关系,当你感觉到它时,在一个沙箱中尝试Advanced Auto-Dependency Generation;一开始理解起来有点棘手,但是一旦你开始使用它,你就会喜欢它。
你可能很想独自离开。毕竟,构建系统按原样工作。麻烦的是,它正在徘徊在Schwartzschild极限上。现在你可以清理它 - 这并不容易,但它将在你的能力范围内。但是,如果不这样做,对代码库进行小的更改将需要对构建系统进行少量更改,始终添加,而不是减少。构建系统将在规模和复杂程度上增长,清理工作将逐渐变得更加困难,直到它超越你的视野,之后你将无法比它增长更快地减少混乱(并且仍然可以完成所有其他工作你必须要做的事情)。这是a well-known anti-pattern。
答案 1 :(得分:0)
我用来使GNU进行任何自省的两种技术是:
很抱歉,答案的一般性质,到目前为止,我还没有概括过仅在特定项目中使用过的那些技术