본문 바로가기

Build/Make

(20)
04. Makefile 의 구성 Makefile 의 구성 Comment # 을 이용해서 주석을 넣을수 있다. Variable 변수 정의를 지정할 수 있다. Rule Makefile 을 구성하는 주요 구성요소는 Rule 의 나열이다. Rule 의 종류에는 명시적 Rule 과 (explicit rules), 암시적 Rule (implicit rules) 이 있다. explicit rules Target 이라 불리는 하나 이상의 파일들을 언제 어떻게 리메이크 해야 하는지를 말하는 룰이다. 이 룰의 Target 은 이를 구성하는 dependency 파일들의 목록을 가지고 있으며 그 목적물들을 갱신하거나 생성하는 Command 를 가지고 있을수 있다. implicit rules 묵시적인 규칙은 파일 이름을 기반으로 파일 클래스를 언제 어떻게 재..
03. make 유틸리티 사용 make -C dir Makefile을 계속 읽지 말고 우선은 dir로 이동하라는 것이다. Recursive make에 사용된다. $(MAKE) -C /DATA/Test $@ ===> cd /DATA/Test && $(MAKE) $@ 과 같다. -n 빌드 명령을 실제로 수행하지는 않고, 그냥 명령문들을 출력하기만 한다. -d Makefile을 수행하면서 각종 정보를 모조리 출력해 준다. 결과를 파일로 저장해서 읽어보면 make 의 동작을 대충 이해할 수 있다. -f file file 에 해당하는 파일을 Makefile로써 취급한다. (-file) -r 내장하고 있는 각종 규칙(Suffix rule 등)을 없는 것으로 (-no-builtin-rules)간주한다. 따라서 사용자가 규칙을 새롭게 정의해 주어야..
02. Build 과정 make 유틸리티의 핵심은 빌드 Target 간의 종속성을 파싱하고 소스 컴파일을 순서에 맞게 처리하는 것이다. ( 여기서 Target 이란 빌드 과정에서 생성되는 모든 결과물을 말한다. 예를 들어 아래 Product 라는 이미지를 만들기 위한 소스 구조를 살펴보면 Target 은 src1.o , src2.o, main.o , libtools.a , Product 가 된다. ) 이런 빌드 핵심 처리를 이해하기 위해 간단히 아래의 예를 살펴보도록 하자. 종속성 위 그림중 일부만 설명하자면 src1.h 와 src1.c 는 src1.o 오브젝트 파일을 만들기 위해 사용되며 이는 최종 Product 이미지를 뽑기 위해 사용되고 Product 는 여러 오브젝트들이 합쳐 생성됨을 나타낸 것이다. 이런 상황에서 sr..
01. make Utility 와 Makefile 현재 소프트웨어 제품은 점차 그 규모가 커져가고 있으며 빌드를 위한 패키지간 복잡성 또한 커지고 있다. 이런 상황에서 make 유틸리티는 제품의 빌드를 효율적으로 진행하기 위한 훌륭한 기본 기능들을 제공한다. make Utility make 유틸리티는 간단히 말하자면 사용자가 작성한 빌드를 위한 스크립트를 파싱해 이를 수행해주는 도구이다. 그리고 make 유틸리티의 입력으로 사용되는 파일이 바로 Makefile 이며 사용자가 작성한 Makefile 에는 즉 사용자는 여러 소스 코드를 어떻게 컴파일할지 지정하고 파일을 복사하며 특정 스크립트를 수행하거나 컴파일 대상을 찾도록 지정하며 패키지 소프트웨어를 설치하는 등 빌드에 필요한 모든 부분을 수행 가능하도록 여러 기능을 make 유틸리티가 읽을 수 있는 방..