여기서는 #이 주석 부분을 나타낸다.

MCU = atmega128
여기서는 그냥 변수선언 이다. 이런방식은 스크립트 방식이라고 하며 HTML의 형식과 비슷하다.
타입은 문자열타입(스트링타입) 으로 나누며 문자가 들어간다
.

# Processor frequency.

F_CPU = 16000000

ATMega128의 프로세서 주파수 설정이다.

# Output format. (can be srec, ihex, binary)

FORMAT = ihex

srec s-record 라고 하여 모토로라사 의 저장 방식이며

ihex 는 인텔사의 저장 방식이다.

# Object files directory

OBJDIR = .

.은 현재 디렉토리를 가리킨다.

# Optimization level, can be [0, 1, 2, 3, s].

OPT = s

최적화 설정이다 숫자는 속도이며 s size라고 하여

용량 최적화를 한다.

# Debugging format.

DEBUG = dwarf-2

디버깅 포맷으로 elf, dwarf 등이 있다.

# Place -D or -U options here for C sources

CDEFS = -DF_CPU=$(F_CPU)UL

C디파인즈

# Place -D or -U options here for ASM sources

ADEFS = -DF_CPU=$(F_CPU)

A(어셈블리)디파인즈

CFLAGS = -g$(DEBUG)

CFLAGS += $(CDEFS)

CFLAGS += -O$(OPT)

CFLAGS += -funsigned-char

CFLAGS += -funsigned-bitfields

CFLAGS += -fpack-struct

CFLAGS += -fshort-enums

CFLAGS += -Wall

CFLAGS += -Wstrict-prototypes

#CFLAGS += -mshort-calls

#CFLAGS += -fno-unit-at-a-time

#CFLAGS += -Wundef

#CFLAGS += -Wunreachable-code

#CFLAGS += -Wsign-compare

CFLAGS += -Wa,-adhlns=$(<:%.c=$(OBJDIR)/%.lst)

CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))

CFLAGS += $(CSTANDARD)

CFLAGS += --save-temps

+=은 앞에 추가로 또 붙이겠다는 뜻이다.

CPPFLAGS += -Wall

W는 워닝이고 all은 워닝을 전부 출력하겠다는 말.

CC=gcc

all:cls version main.o hexaview.o
@echo ---------------
@echo Compiler : $(CC)
@echo ---------------
$(CC) -o main main.o hexaview.o

.o 파일을 컴파일 하는 명령문인데 .o파일이 없으면 자동으로

만들어서 실행하게된다. 한번 만들어지면 다음에는 다시 만들지 않고

이미 만든 파일을 가지고 컴파일을 한다.

최종컴파일 이후에 수정되었으면 다시 컴파일 한다.

(실행파일 이후에 소스수정 유무를 확인하여 컴파일을 결정)

지능화 컴파일러