1. Makefile 특수 문자
| $@ | 현재 만들고 싶은 Output 이름 |
| $^ | 재료들의 이름 |
예)
===========================================================================
TARGET=spaghetti.bin
ELF_TARGET=spaghetti.elf
BINTOOL=fromelf
CC=tcc
$(TARGET): $(ELF_TARGET)
$(BINTOOL) -bin -o $@ $^ --------------> ①
$(ELF_TARGET): spaghetti.o manipulation.o
$(CC) -o $@ $^ --------------> ②
spaghetti.o: spaghetti.c
$(CC) -c @^ --------------> ③
manupulation.o: manupulation.c
$(CC) -c @^ --------------> ④
===========================================================================
① $@ : spaghetti.bin
$^ : spaghetti.elf
② $@ : spaghetti.elf
$^ : spaghetti.o manipulation.o
③ $@ : spaghetti.o
$^ : spaghetti.c
④ $@ : manipulation.o
$^ : manipulation.c
2. 추가 특수 문자
"=" 와 ":="의 차이
TEMP := $(CC) temp
CC = tcc
위와 같은 문법으로 되어 있다면 TEMP에는 무엇이 들어 있을까요?CC = tcc
TEMP == temp 이와 같이 됩니다.
CC = tcc
TEMP := $(CC) temp
위와 같은 문법으로 되어 있다면 TEMP에는 무엇이 들어 있을까요?TEMP := $(CC) temp
TEMP == tcc temp 이와 같이 됩니다.
TEMP = $(CC) temp
CC = tcc
위와 같은 문법으로 되어 있다면 TEMP에는 무엇이 들어 있을까요?CC = tcc
TEMP == tcc temp 이와 같이 됩니다.
"?="와 "+="
CC?=tcc
CC+=gcc
CC?=cc
CC에는 값이 어떻게 들어 있는가?
CC == "tcc gcc"
이렇게 들어 있습니다.
이유는 ?=는 CC가 선언되어 있지 않으면 선언하는 것입니다.
+=는 공백을 포함하여 CC에 내용을 추가합니다.
따라서, 결과는 "tcc gcc"입니다.
CC+=gcc
CC?=cc
CC에는 값이 어떻게 들어 있는가?
CC == "tcc gcc"
이렇게 들어 있습니다.
이유는 ?=는 CC가 선언되어 있지 않으면 선언하는 것입니다.
+=는 공백을 포함하여 CC에 내용을 추가합니다.
따라서, 결과는 "tcc gcc"입니다.
@명령
all :
@echo "It's me! make"
결과 :
It's me! make
all :
echo "It's me! make"
결과 :
echo It's me! make
It's me! make
l-git-subversion-1-pdf.pdf