便于移植的 makefile 模板
这是 makefile 模板,支持gcc
和arm-none-eabi-gcc
两种编译器,只需要修改少量文件就能移植。
通俗地说,makefile
是主驱动,makefile.build
是通用的规则和工具,build.mk
则是数据。
.
├── app
│ ├── b.c
│ ├── build.mk
│ └── main.c
├── build.mk
├── component
│ ├── build.mk
│ └── mt.c
├── drv
│ ├── build.mk
│ ├── c.c
│ └── led
│ ├── build.mk
│ └── d.c
├── include
│ └── demo.h
├── lib
│ ├── build.mk
│ └── hal_drv
│ ├── inc
│ └── src
│ └── e.c
├── Makefile
├── Makefile.build
└── readme.md
makefile_template 遵循 LGPLV2.1 许可,详见LICENSE
文件。
- v1.0
- makefile 初版
build.mk
makefile
换句话说,此 makefile 模板想应用于新工程,只需要带上Makefile
和Makefile.build
即可,build.mk
要重新写。
build.mk
的作用是添加要编译的文件,那么如果目录存在嵌套呢?
-
如何添加
main.c
?(.s
,.S
也是一样的做法)obj-y += main.o
注意:写的是
.o
-
如何添加
demo.h
?CCFLAGS += -I$(src)/include
-
如何添加目录?
obj-y += tuzi/
注意:
tuzi
后面的/
一定不能漏掉!!!
-
如果想方便看清目录结构
- 例如ipc组件,内存管理组件,有各自的
build.mk
- 例如ipc组件,内存管理组件,有各自的
-
如果此目录的内容,想比较方便地增删
- 例如驱动组件
- 添加库
- 例如上面目录结构的
lib/
- 例如上面目录结构的
总的来说,整个工程里
build.mk
可以只有一个,也可以有多个,只要能清晰划分组件结构以及方便增删就可以了。
makefile
里的CCFLAGS
、ASFLAGS
、LDFLAGS
参数根据具体的需求修改