初次使用WinAVR,了解到需要通过Makefile文件来设定程序编译时的一些值,发现当一个工程中加入多个源文件时不能同时编译,网上查了一下,需要修改Makefile文件:
# List C source files here. (C dependencies are automatically generated.)
SRC = $(TARGET).c
需要在SRC后逐一添加需要编译的C文件,如下:
# List C source files here. (C dependencies are automatically generated.)
SRC = $(TARGET).c timer.c DS1302.c
这样做比较麻烦,每次加入新的c文件就得修改Makefile,另外每个工程的Makefile都不一样,需要修改,而不能直接拷贝(对于同一型号的AVR单片机,不同工程的Makefile文件)
于是,我想到使用通配符让其自动编译文件夹内所有.c文件,由于对Linux不了解,网上找到Makefile通配符,开始我改成这样:
# List C source files here. (C dependencies are automatically generated.)
SRC = *.c
试验发现无法编译,后来又找到这篇文章:
http://blog.chinaunix.net/uid-12137506-id-28563.html ,然后我把Makefile改为这样:
# List C source files here. (C dependencies are automatically generated.)
#SRC = $(TARGET).c
# 使用此函数通配符自动编译当前文件夹内所有C文件
SRC = $(wildcard *.c)
再次编译时发现编译通过,编译了同一文件夹下所有c文件,并成功生成了Hex文件。
当下次需要新建工程时,如果还是用于同一型号的单片机,其他参数不变,可以直接将这个Makefile文件拷过去;另外对于某一个工程,新添加c文件不再需要修改Makefile文件,一劳永逸^_^