makefile

Janice._.oooh·2022년 3월 22일
0

리눅스

목록 보기
2/3

make & Makefile


make파일 관리 유틸리티입니다.

파일간의 종속관계를 파악하여 Makefile(기술 파일)에 적힌대로 컴파일러에 명령하여 SHELL명령이 순차적으로 실행될 수 있게 합니다.

makefile 사용 이유

  • 각 파일에 대한 반복적 명령의 자동화로 인한 시간 절약
  • 프로그램의 종속 구조를 빠르게 파악 및 관리 용이
  • 단순 반복 작업 및 재작성을 최소화

makefile의 구성

목적파일(Target): 명령어가 수행되어 나온 결과를 저장할 파일
의존성(Dependency): 목적파일을 만들기 위해 필요한 재료
명령어(Command): 실행 되어야 할 명령어들
매크로(macro): 코드를 단순화 시키기 위한 방법

makefile 작성 규칙
1. 매크로 정의는 makefile에 정의한 string으로 치환한다.
2. 명령어의 시작은 반드시 'Tab'으로 시작한다.
3. Dependency가 없는 Target도 상용 가능하다.



Makefile 실습


[source code]

// ./include/configs.h
#define CONFIG
// main.c
#include <stdio.h>
#include "configs.h"  // option -I

int main() {
#if defined(CONFIG)  // macro
    printf("Hello World\n");
#else
    printf("Bye World\n");
#endif
    return 0;
}

[makefile]

[result]
$ make
1. all 타겟의 dependency인 test 타겟 명령어 실행
2. clean 타겟 명령어 실행
3. 매크로에 정의된 &{TARGET} 즉, main.o 타겟 실행
4. all의 모든 dependency가 준비된 후, all 명령어 실행

[TIP!]
makefile 작성과정에서 내부 매크로를 사용하여 코드를 단순화 시킬 수 있습니다.
1. $@ : 현재 Target의 이름
2. $^ : 현재 Target의 Dependency 항목 리스트

example)



Reference)

0개의 댓글