make 명령어

  1. 규모가 큰 프로그램의 컴파일을 위한 유용한 도구

  2. 많은 수의 소스로 구성된 프로그램

  3. 사용자와 시스템에 따라 다양한 컴파일 옵션이 필요한 프로그램

  4. 시스템 설정 구성 - 컴파일 - 설치 등의 일련의 작업이 필요한 경우

  5. make 명령어는 makefile을 이용하여 컴파일 작업을 수행한다.

make [-f makefile이름] [options] [targets]


- 별도의 makefile 파일을 지정하지 않으면 현재 디렉터리의 makefile 혹은 Makefile을 이용한다.

- 타겟을 지정하지 않으면 all 타겟을 빌드한다.



Makefile

  1. 컴파일/빌드 규칙을 기술해 놓은 파일

  2. 컴파일 명령을 비롯한 쉘 명령어로 구성 (쉘 스크립트와 유사하다)

  3. 소스파일들 간의 종속성을 명시

  4. make가 종속성을 자동적으로 파악하여 효율적인 컴파일 작업 수행

  5. 소스파일 하나를 수정하더라도 전부 컴파일할 필요가 없다.

  6. 소스 컴파일 이외의 작업도 기술 가능



Makefile의 기본 구성

1. 타겟(Target)

  • 종속성을 표시하기위해 쉘 명령어를 그룹핑한 것 (종속성 목록은 파일이름들이 나열되어 있다.)

  • 콜론(:)으로 타겟과 종속성 목록을 구분한다. ex) target : test1.o test2.o

  • 쉘 명령어는 항상 [tab] 으로 시작하며, 타겟 다음줄부터 기술한다.

  • 그 타겟의 종속성이 맞을 때만 쉘 명령어가 실행된다. 즉, 파일들이 그 타겟을 구성한다고 생각하면 된다.

  • 종속성 목록에 있는 파일들을 만들기 위해 make 명령어로 컴파일 작업을 수행한다.

  • 종속성 목록 중 하나라도 빠지면 오류 발생


2. 과정(Procedure)

  • 명령행에 지정된 명령을 실행하여 타겟을 빌드

  • 종속성에 지정된 파일이 없으면 해당 빌드 수행

  • 종속성 파일이 갱신되면 타겟을 다시 빌드

  • all과 clean

- all: 모든 빌드 타겟을 종속성 목록에 명시

- clean: make에 의해 생성된 파일들을 삭제


3. 매크로(Macro)

  • 매크로(=변수) 정의 : 매크로 이름 = 값

  • 매크로 사용 : $(매크로이름), ${매크로이름}

  • 주석은 '#'으로 시작한다.

  • 매크로는 항상 맨 위에 기술한다.

  • 기본적인 매크로

- CC : 컴파일러 프로그램 명시

- CFLAGS : 컴파일 옵션 명시



'Note' 카테고리의 다른 글

[GooglePlay] 인앱 결제  (0) 2018.12.29
GDB 사용법  (0) 2018.06.29
GCC 사용법  (0) 2018.06.29
git 명령어 & Bitbucket 사용하기  (0) 2018.06.27
Domain Name System - DNS와 네임서버  (0) 2017.06.20

+ Recent posts