test : gcc -o test main.c print.c input.c
test : main.c print.c input.c gcc -o test main.c print.c input.c
test : main.o print.o input.o gcc -o test main.o print.o input.o
test : main.o print.o input.o gcc -o test main.o print.o input.o main.o : main.c common.h gcc -c main.c print.o : print.c common.h gcc -c print.c input.o : input.c common.h gcc -c input.c
$ rm *.o
test : main.o print.o input.o gcc -o test main.o print.o input.o main.o : main.c common.h gcc -c main.c print.o : print.c common.h gcc -c print.c input.o : input.c common.h gcc -c input.c clean : rm test *.o
# target : dependency_list # command_list # .PHONY:all clean all : test main.o : main.c common.h gcc -c main.c print.o : print.c common.h gcc -c print.c input.o : input.c common.h gcc -c input.c test : main.o print.o input.o gcc -o test main.o print.o input.o clean : rm test *.o
매크로는 makefile 에서 편리하게 사용하기 위해 미리 정의된 변수이다.
#main.c print.c input.c common.h # TARGET = test OBJECTS = main.o print.o input.o CC = gcc $(TARGET) : $(OBJECTS) $(CC) -o $(TARGET) $(OBJECTS) clean : rm $(TARGET) $(OBJECTS) main.o : main.c common.h print.o : print.c common.h input.o : input.c common.h
#main.c print.c input.c common.h # TARGET = test OBJECTS = main.o \ print.o \ input.o CC = gcc $(TARGET) : $(OBJECTS) $(CC) -o $(TARGET) $(OBJECTS) clean : rm $(TARGET) $(OBJECTS) main.o : main.c common.h print.o : print.c common.h input.o : input.c common.h
.SUFFIXES : .c.o .PHONY : all clean TARGET = example OBJECTS = main.o \ print.o \ input.o CC = gcc all : $(TARGET) $(TARGET) : $(OBJECTS) $(CC) -o $@ $(OBJECTS) .c.o : $(CC) -c $< clean : rm $(TARGET) $(OBJECTS) main.o : main.c common.h print.o : print.c common.h input.o : input.c common.h