make

여러 개의 파일로 구성된 소프트웨어를 개발하는 도구

make 기능

  • 수정된 파일들을 필요에 따라 다시 컴파일

  • 소스 파일들의 컴파일 순서를 결정

  • 컴파일한 소프트웨어를 원하는 디렉토리에 설치

  • 메뉴얼 페이지를 작성

make 사용법

실행방법

  • Makefile이 있는 디렉토리에서 'make'를 실행

옵션

  • -k : 컴파일 과정에서 에러가 발생해도 무시하고 계속 진행

  • -n : 작업할 내용을 화면에 출력

  • -f : makefile 대신 사용할 파일을 지정

파라미터

  1. target

  • 타겟명이 파라미터로 지정되면 지정된 타겟을 생성한다.

  • 타겟 명이 지정되지 않으면 makefild에 나열된 타겟들 중에서 첫 번째 타겟을 생성한다.

  • 기본적으로 all 타겟을 첫 번째 타겟으로 설정하고 다른 타겟들은 all target을 만들기 위한 의존 타겟들로 정의 나열

  1. rule

  • 최종 응용 프로그램을 구성하는 각 파일들이 프로그램 소스파일들과 어떻게 관련되어 있는지를 설명

  1. prerequisites

  • 타겟을 만들 때 필요한 파일들의 리스트

  1. Recipe

  • prerequisites 를 사용하여 타겟을 만드는 방법을 기술

정의 방법

# simple Makefile
myapp: main.o 2.o 3.o
  gcc -o myapp main.o 2.o 3.o
 
main.o: main.c a.h
  gcc -c main.c
 
2.o: 2.c a.h b.h
  gcc -c 2.c
 
3.o: 3.c b.h c.h
  gcc -c 3.c

Macro

문법

  • MACRONAME = value,

사용법

  • (MACRONAME) or{MACRONAME}

Automatic Variable

  • $@ : 현재 타겟 이름

  • $* : 확장자를 제거한 타겟 이름

  • $< : 첫번째 prerequisites 이름

  • $^ : 전체 prerequisites 리스트

  • $? : 현재 타겟 생성 이후에 수정된 prerequisites 리스트

OBJS = hello.o hello_msg1 hello_msg2 hello_msg3
 
hello:$(OBJS)
  gcc -o $@ $(OBJS)
 
hello.o:hello.c
  gcc -c $<
 
hello_msg1.o:hello_msg1.c
  gcc -c $^[0]
 
hello_msg2.o:hello_msg2.c
  gcc -c $*.c

Internal Macro

명령어 앞에 추가되는 특수 문자

  • '-' : 명령어 실행시 발생하는 에러 무시

  • '@' : 명렁어 실행 전에 화면에 명령어를 출력하지 않음

Phony Target

  • Phony Target 이란 타게시름이 실제 파일이름이 아닌 타겟을 말한다.

  • Phony target 지정 방법은 명시적으로 특수 타겟인 ".PHONY"을 사용하여 명시적으로 지정한다.

사용 이유

  • 같은 이름의 파일과 충돌하는 것을 피하기 위한 목적

  • Make가 phony target을 위한 rule 탐색을 하지 않기에 성능 향상 목적

clean:
  -rm main.o 2.o 3.o

'-'를 이용하여 main.o 2.o 3.o를 에러를 무시하고 rm 을 수행

$ make clean

쉘에서 make clean을 주어 makefile 에 정의한 Phony Target을 지정

'Operator System > Linux' 카테고리의 다른 글

쉘 프로그래밍 간단한 문법  (0) 2017.10.26
프로세스와 생성방법  (0) 2017.10.26
파일  (0) 2017.10.26
Compile과 라이브러리  (0) 2017.10.26
환경변수  (0) 2017.10.26

+ Recent posts