Вот в качестве примера Makefile для iar-arm:
CODE
NAME=myprog
SHELL=CMD.EXE
IARHOME=C:/IAR-ARM/arm
CC=$(IARHOME)/bin/iccarm
LD=$(IARHOME)/bin/ilinkarm
CFLAGS=-Ohz --cpu=Cortex-M3 -r -e --relaxed_fp --silent -Isrc/
EXE=$(NAME).out
BIN=$(NAME).bin
MAP=$(NAME).map
SRC=$(subst /,\,$(addprefix $(CURDIR)/, $(wildcard src/*.c)))
OBJ=$(SRC:.c=.o)
DEP=$(SRC:.c=.d)
$(BIN): $(EXE)
@echo Generating BIN...
@$(IARHOME)/bin/ielftool $(EXE) $(BIN) --bin --silent
$(EXE): $(OBJ)
@echo Linking...
@$(LD) $(OBJ) --config linker.icf -o $(EXE) --map $(MAP)
%.o: %.c
@echo Compiling $<
@$(CC) $< $(CFLAGS) --dependencies=m $(<:.c=.d) -o $@
.PHONY: clean
clean:
@rm -f $(NAME).* $(OBJ) $(DEP)
@echo Done cleaning
-include $(DEP)
Здесь предполагается, что в корне директории проекта есть файлы make.exe, rm.exe и linker.icf. Исходники лежат в поддиректории src. Даже многопотоковая компиляция работает (make -j4).
Вот версии make и rm, которые я использую:
- GNU Make version 3.78.1, by Richard Stallman and Roland McGrath. Built for Windows32
- rm (GNU fileutils) 3.16
Также приложены скриншоты конфигурации команд Build Project, Compile File, Clean Build.