MAKE: What is a Build Automation Tool?

HiRuRu·2024년 10월 2일
0

Server Programming

목록 보기
1/1
post-thumbnail
  • Definition:

    Make is a utility that helps manage groups of programs efficiently
    -> 프로그램을 구성하는 여러 파일들이 있을때, 그 파일들을 효율적으로 관리하고 자동으로 컴파일하거나 업데이트하는 작업을 도와주는 도구

  • why we should use MAKE?

    : MAKE을 사용하면 소스파일이 많거나, 각각의 파일들이 서로 의존성 관계에 있을때, 모든 파일을 수동으로 다시 컴파일 하는 대신 make가 알아서 필요한 파일만 다시 컴파일 해준다.

  • What is Makefile composed of

    Make file is composed of 3 componets:
    Target, dependency, command

  • for example

    어느 때 어떤 target이 다시 컴파일 될 것인가?
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가 바뀌었을 경우
  • add.c 혹은 sub.c가 바뀌었을 경우
  • addsub.h가 바뀌었을 경우
  1. main.c 가 바뀌었을 경우
    main.o는 main.c와 addsub.h에 의존한다
    -> 따라서 main.c가 변경됨에 따라 main.o가 다시 컴파일됨.
    이로 인해, all 타겟에서 gcc -o test main.o add.o sub.o가 실행되어 최종 실행 파일인 test도 다시 빌드됨

  2. 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도 다시 빌드됨

  3. addsub.h가 바뀌었을 경우
    main.o는 addsub.h에도 의존
    -> 따라서 addsub.h가 변경되면 main.o가 다시 컴파일되고, 결과적으로 test도 다시 빌드됨

  • ? "test가 다시 빌드된다."는 무슨뜻?
    test가 다시 빌드 된다는 뜻은 오브젝트 파일들이 다시 컴파일된후, 최종적으로 링크되어 실행파일이 새로 만들어진다라는 의미이다. 즉, test자체가 다시 컴파일되는 것은 아니고, 링크 단계만 다시 실행되는것.
  • 컴파일: 소스파일(.c) -> 오브젝트 파일(.o)
  • 링크: 오브젝트 파일(.o)-> 실행파일(test)
profile
긍정긍정!

0개의 댓글