Создал статью по сборке в avr-gcc (чаще его WinAvr'ом кличут)
wiki/Avr-gcc:make
собственно дал линк на "умную книжку" и свой Makefile - можно использовать под любой проект, правки минимум
свой мейк строил на основе мейка из умной книжки
Технический форум по робототехнике.
# output filename
program_name := main
# source directories ('.' - current dir)
source_dirs := .
#source_dirs := . includes
#source_dirs := $(addprefix ../,$(source_dirs))
# uC type
mcu := atmega128
# CPU freq
f_cpu := 14745600UL
# compiler flags
cpflags := -mmcu=$(mcu) -Wall -g -O2 -DF_CPU=$(f_cpu)
# linker flags
ldflags := -mmcu=$(mcu) -Wl
#- do not need to edit ----------------------------------------------
rm := rm -rf
cog := cog.py -r
# compiller
cc := avr-g++
cclog := compile.log
# avr-objcopy
objcpy := avr-objcopy
# doxygen
doxygen := doxygen
doxylog := doxygen.log
search_wildcards := $(addsuffix /*.cpp,$(source_dirs))
$(addsuffix .out,$(program_name)): cog all
all: $(notdir $(patsubst %.cpp,%.o, $(wildcard $(search_wildcards) ) ) )
$(cc) $(ldflags) $^ -o $(addsuffix .out,$(program_name)) 2>>$(cclog)
$(objcpy) -R.eeprom -O ihex $(addsuffix .out,$(program_name)) $(addsuffix .hex,$(program_name)) 2>>$(cclog)
$(doxygen) 2>> $(doxylog)
VPATH := $(source_dirs)
%.o: %.cpp
$(cc) $(cpflags) $(addprefix -I,$(source_dirs)) -MD -c $< 2>>$(cclog)
cog:
$(cog) *.cpp *.h
include $(wildcard *.d)
clean:
$(rm) $(addsuffix .out,$(program_name)) $(addsuffix .hex,$(program_name)) *.d *.o *.hex $(cclog) $(doxylog) doc
$(cog) -x *.cpp *.h