Avr-gcc:make

Материал из roboforum.ru Wiki
Перейти к: навигация, поиск



GNU Make - это программа для сборки программ. почитать можно здесь

я же приведу простой мэйкфайл чтоб начинающим не нужно было его писать самим.

Пример Makefile

<source lang="bash">

  1. Makefile
  2. output filename

program_name := main

  1. source directories ('.' - current dir)

source_dirs  := .

  1. source_dirs  := . includes
  2. source_dirs  := $(addprefix ../,$(source_dirs))
  1. uC type

mcu := atmega128

  1. CPU freq

f_cpu := 14745600UL

  1. compiler flags

cpflags := -mmcu=$(mcu) -Wall -g -O2 -DF_CPU=$(f_cpu)

  1. linker flags

ldflags := -mmcu=$(mcu) -Wl

  1. - do not need to edit ----------------------------------------------

rm := rm -rf

  1. compiller

cc := avr-g++ cclog := compile.log

  1. avr-objcopy

objcpy := avr-objcopy

  1. doxygen

doxygen := doxygen doxylog := doxygen.log

search_wildcards := $(addsuffix /*.cpp,$(source_dirs))

$(addsuffix .out,$(program_name)): $(notdir $(patsubst %.cpp,%.o, $(wildcard $(search_wildcards) ) ) ) $(cc) $(ldflags) $^ -o $@ 2>>$(cclog) $(objcpy) -R.eeprom -O ihex $(addsuffix .out,$(program_name)) $(addsuffix .hex,$(program_name)) $(doxygen) 2>> $(doxylog)

VPATH := $(source_dirs)

%.o: %.cpp $(cc) $(cpflags) $(addprefix -I,$(source_dirs)) -MD -c $< 2>>$(cclog)

include $(wildcard *.d)

clean: $(rm) $(addsuffix .out,$(program_name)) $(addsuffix .hex,$(program_name)) *.d *.o $(cclog) $(doxylog) doc </source>