MyDevLife (257) 썸네일형 리스트형 08. VPATH, vpath Rule 의 요소인 Prerequisite 를 구성하는 소스 파일들은 보통 여러 다른 디렉토리에 분류되며 여러 디렉토리에 분할된 소스 파일을 찾기 위해 VPATH, vpath 를 사용한다. VPATH Target, Prerequisite 리스트 목록에 없는 파일이 존재하면 VPATH 로 지정한 디렉토리를 찾는다. VPATH 변수안에 디렉토리 이름들은 콜론이나 공백들로 구분된다. 디렉토리들이 나열된 순서로 make가 검색한다. 예를 들어서, make가 이 순서로 검색하는, 두 디렉토리들, `src'과 `../headers', 을 담고 있는 경로를 지정하면 VPATH = src : ../headers foo.o : foo.c 만약 foo.c 가 현재 디렉토리에 없고 src 폴더에 있다면 아래와 같이 자동으로.. 07. Wildcard wildcards make 유틸리티에서 문자열 확장 기능을 가지고 있는데 이를 와일드 카드라고 한다. 와일드 카드 확장은 포지션 별로 사용 법이 다르며 아래와 같다. wildcard Other places Example Test wildcard 각 별칭별 의미 wildcard 함수 사용 06. Variable Variable 변수 정의는 보통 '변수명:=값' 형태를 사용하여 정의하고 ${변수명} 형태로 정의된 변수를 사용한다. 변수 이름은 ':' , '#' , '=' 을 포함하면 안되며 보통 대문자 및 숫자 그리고 밑줄등으로 표기한다. 변수에 특수문자를 사용하는 경우, 이후 특수 문자가 다른 기능으로 대체될 수 있기 때문에 피해야 한다. Automatic Variables makefile 의 Recipe 에서만 사용할 수 있는 Automatic Variable 에는 아래와 같은 것이 있다. 변수대입 변수 대입 구문은 경우에 따라 아래의 3 가지를 사용할 수 있다. = `=' 를 사용하여 변수를 정의한 경우를 말한다. foo = $(bar) bar = $(ugh) ugh = Huh? all:;echo $(foo.. 05. Rule 의 구성 Rule Rule 이란 타겟을 빌드하기 위한 그룹이며 보통 아래의 3가지 요소로 구성된다. Target 은 실행 가능한 파일이나 오브젝트 파일이 되며 Prerequiste 는 Target 을 구성하기 위한 소스 파일이나 오브젝트 파일인 경우가 많다. 그리고 Rule은 Prerequiste 를 통해 Target 을 만들기 위한 Command 명령이 위치한다. 그래서 전형적인 Makefile 의 모습은 보통 아래와 같다고 보면 된다. Target Recipe 에 의해 만들어지는 결과물이다. Prerequisite (Dependency) Target 이 생성되기 위해 필요한 파일이다. 바꿔말하면 해당 파일이 변경되면 관련된 Target 은 재생성되어야 한다는 것도 의미한다. Prerequisite type 에.. 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 유틸리티가 읽을 수 있는 방.. 이전 1 ··· 15 16 17 18 19 20 21 ··· 33 다음