$ make -f <makefileName> target
target : dependecies
(\t) command1
(\t) command2
linecount : foo.c
(\t) wc -l foo.c > linecount
/* makefile */
main: main.o sum.o
gcc -o main main.o sum.o
main.o: main.c
gcc -c main.c
sum.o: sum.c
gcc -c sum.c
$ make
$ gcc -o main main.o sum.o
$ gcc -c main.c
$ gcc -c sum.c
Example1과 같은 기능.
OBJS = sum.o main.o //OBJS라는 Variable을 "sum.o", "main.o"라는 문자열 리스트로 정의함
all : main
sum.o : sum.c
gcc -c sum.c
main.o: main.c
gcc -c main.c
main: $(OBJS) //OBJS의 값들을 포맷팅함. ${OBJS}도 가능.
gcc -o main $(OBJS) // 단, $(OBJS)를 추천.
$@ : 현재 target의 파일명을 나타냄.
$< : 현재 target의 첫번째 dependency 파일명을 나타냄.
$^ : 현재 target의 모든 dependency 파일명을 나타냄.
$? : 현재 target보다 최신의 dependency 파일명을 나타냄.
$* : 현재 target의 파일명에서 확장자를 제외한 부분을 나타냄.
$% : archive member의 이름을 나타냄. 라이브러리 파일 내부의 특정 오브젝트 파일을 참조할 때 사용됨.
/* makefile */
CFLAGS= -Wall -g
OBJS = sum.o main.o
all : main
%.o: %.c
gcc -c -o $@ $(CFLAGS) $<
main: $(OBJS)
gcc –o main $(OBJS)
CC=gcc
CFLAGS = -Wall –g -c
INCLUDE = -I.
LIBS = -L. -lm
OBJS = sum.o main.o
all : main //phony target
%.o: %.c
$(CC) $(INCLUDE) $(CFLAGS) $<
main: $(OBJS)
$(CC) –o main $(OBJS) $(LIBS)
clean: //phony target
rm –f main $(OBJS)