我真的应该使用make吗?

Tra*_*ggs 7 c embedded makefile

在某些时候,我和一位同事从网上抓起了一个"示例"makefile,用于构建xmega芯片的嵌入式代码.我们发现这种体验非常令人沮丧.我们俩都不是专家,也不是新手.我们偶尔进行调整/调整.我们花了几个小时阅读制作手册和投掷飞镖试图做更严重的变化.

通常在我们建造的时候,我们总是从干净的一切开始.因为自动依赖生成似乎不能可靠地工作,我们刚刚了解到它更安全.由于它是一个嵌入式项目,在小型处理器上,编译实际上很快.这是在眨眼间完成的,这引出了我真正的问题:

如果我没有使用make来进行任何类型的依赖管理并利用增量构建,那么使用它而不是简单的shell脚本是否真的有意义?

我更有信心编写C代码,python和优秀的bash脚本.今天最近的挫败感,是试图将一些与FreeRTOS相关的源文件移到子目录中.make对我们来说唯一真正的优势是它是在OSX上安装的库存,而vi和QtCreator和XCode有一些能力与我们的makefile集成(但我可以创建一个非常小的makefile,在这里桥接).

Mar*_*ler 17

Make是一个用于构建软件的古老专家系统.它仍然被广泛使用,所以是值得学习的.你可能很幸运,目前几乎可以立即建立一个项目,但是,根据我的经验,这是例外,而不是规则.

鉴于依赖性跟踪和动作推断是Make的目的,将其用作批处理系统是零增益,并且它还会干扰您学习如何使用该工具(Make).

从你的帖子中听起来你已经与使用Make with子目录发生冲突.虽然它可能无法解决您的直接问题,但本文:Recursive Make Considered Harmful,可能有助于解释情况,并让您深入了解Make本身的操作.

Make不会自动生成依赖项.您将在网上找到许多有关如何自动生成GNU Make依赖项的资源.我不确定OSX是否使用GNU Make或BSD Make(或者即使BSD变体仍然存在).如果是后者(BSD),我相信你可以找到如何自动生成BSD变体的依赖关系的方法.

我在这篇文章中推断的更为存在的问题是:当它不能为我的项目提供直接的好处时,学习这个旧工具是否有价值?

我会回答:你的小项目是学习这个工具的绝佳机会.如果你面临一个增量编译真正节省时间的项目,痛苦阈值肯定会高得多.

还有许多其他构建系统要么取代Make,例如:Jam,SCons,Rake,要么充当元生成文件生成器:CMake,一些IDE.绝大多数的替换表明很多人认为Make不合适(或者在某些情况下可能只是令人不愉快).

然而,在可预见的未来,对Make的一点了解可能会让你处于有利地位.它也可能是了解构建系统如何工作的第一步(或最明显的步骤),以及与规则生成和依赖关系跟踪相关的问题.

祝你好运.


Ste*_*fan 2

这是我不久前给自己提出的一个问题。我个人使用 python 脚本来编译 AVR 代码(链接)。我不是制造专家,但我确实有一些经验。尽管如此,我还是觉得这令人沮丧,而且对于加州大学的需求来说毫无价值,除非你已经是专家了。

我并不是鼓励任何人这样做,但没有什么可以阻止您在 Python(Perl、Ruby、Bash...)中实现相同的依赖项检查,甚至可能更强大。我相信这只是语言选择或您觉得舒服的问题。make 只是一种编程语言,对于初学者来说可能看起来很晦涩。