View on GitHub

富乎 · 地问


avatar
辗转探寻为富乎?《天问》无解向地问!

<<< 返回主页

集中解决检出开源项目和写Makefile
的痛点

1、背景

2、预期目标

3、实现详情

3.1 开源项目检出脚本的核心逻辑

根据版本控制系统Version Control SystemVCS)和检出方式的不同,而采用不同的逻辑。 由于当前Git最流行、GitHub资源最丰富,所以本文以Git指代VCS。下面根据不同的检出方式, 逐一给出其对应的核心逻辑:

固定的逻辑如上所示。至于要检出哪些项目、需要每个项目的哪个版本/哪次提交/哪些文件、 检出到哪个目录、项目的出处等,则可按一定格式将这些信息分别赋给特定的变量, 然后让以上固定的检出逻辑以这些变量为条件,逐一将所需内容检出即可。

完整脚本详见懒编程秘笈项目 的makefile/checkout.git.mk文件。至于SVN版本的检出脚本,后续再实现。

3.2 普通C/C++应用程序Makefile的核心逻辑

按这类Makefile的常见需求点来逐项说明:

完整脚本详见懒编程秘笈项目 的makefile/c_and_cpp.mk文件。

3.3 Linux驱动Makefile的核心逻辑

简单地说就是Linux内核编译系统(含KconfigMakefileShell脚本等), 所以只需在此基础上简单封装一下即可,而无需重复造轮子,在此之前已专门写过文章, 详见《懒人版Linux驱动Makefile》

3.4 嵌入式项目Makefile的核心逻辑

嵌入式其实是个很宽泛的概念,最简单的是51单片机,更复杂且又常见的有AVRSTM32ARM Cortex等。这些嵌入式处理器中,有些配套的专用编译工具只有Windows版本, 无法或很难使用Makefile;而有些则除了提供Linux版的集成开发环境IDE)外, 还支持开源的编译器,这些编译器通常是gcc的变体,所以能很好地利用Makefile提供的机制。

作为一个非常火、应用非常广泛的芯片系列,STM32芯片家族不乏性价比很高的型号, 且其IDE可跨平台使用,既支持图形界面,又对命令行友好,可以纳入通用Makefile体系。 与前述Linux驱动Makefile一样,关于STM32之前也写过类似的文章,因此在本文也不再展开, 详见《在Linux下玩转STM32》的“4.3 增加顶层Makefile”小节。

3.5 脚本的模块化、组合及生成

3.6 使用说明

4、总结

其实没什么好总结,只是在写完详细内容之后,对开篇的背景作一些呼应和补充而已, 不看亦无损失,但看了或许有新启发: