Make is a utility that helps manage groups of programs efficiently
-> 프로그램을 구성하는 여러 파일들이 있을때, 그 파일들을 효율적으로 관리하고 자동으로 컴파일하거나 업데이트하는 작업을 도와주는 도구
: MAKE을 사용하면 소스파일이 많거나, 각각의 파일들이 서로 의존성 관계에 있을때, 모든 파일을 수동으로 다시 컴파일 하는 대신 make가 알아서 필요한 파일만 다시 컴파일 해준다.
Make file is composed of 3 componets:
Target, dependency, command
all: main.o add.o sub.o gcc -o test main.o add.o sub.o main.o: addsub.h main.c gcc -c main.c add.o: add.c gcc -c add.c sub.o: sub.c gcc -c sub.c
main.c 가 바뀌었을 경우
main.o는 main.c와 addsub.h에 의존한다
-> 따라서 main.c가 변경됨에 따라 main.o가 다시 컴파일됨.
이로 인해, all 타겟에서 gcc -o test main.o add.o sub.o가 실행되어 최종 실행 파일인 test도 다시 빌드됨
add.c 혹은 sub.c가 바뀌었을 경우
각각 add.o와 sub.o는 각각 add.c와 sub.c에 의존하고 있음
-> 따라서 add.c가 변경되면 add.o가, sub.c가 변경되면 sub.o가 다시 컴파일됨.
이로 인해, all 타겟에서 gcc -o test main.o add.o sub.o가 실행되어 최종 실행 파일인 test도 다시 빌드됨
addsub.h가 바뀌었을 경우
main.o는 addsub.h에도 의존
-> 따라서 addsub.h가 변경되면 main.o가 다시 컴파일되고, 결과적으로 test도 다시 빌드됨