본문 바로가기

Build

(36)
12. include include include 지시어(directive) 는 make가 현재 makefile을 읽는 것을 잠시 중단하고 계속하기 전에 하나 이상의 다른 makefile 들을 읽도록 한다.
11. Empty Target .PHONY 의 변종으로 Empty Target 라는 것이 있다. 이를 위해 touch 명령으로 파일을 항상 최신으로 만들어서 파일이 존재하더라도 Command 가 항상 실행되도록 만든다.
10. Target Without Recipe And Prerequiste .PHONY 의 변종으로 Empty Recipe 라는 것이 있다. Target 에 Recipe 와 Prerequiste 들이 존재하지 않는 파일이라면 make는 이 Target 을 Rule 이 실행될 때마다 업데이트되어야 할 것으로 생각한다. 그래서 결과적으로 이것에 종속적인 모든 Target 들의 Shell Command 는 항상 실행된다. 결국 위와 사용되며 일반적으로 .PHONEY 와 별반 다를게 없이 동작한다.
09. Phony Target Phony Targets Make 유틸리티는 Target 이 있는 경우 Target 이 업데이트 되었는지 확인하고 업데이트 되지 않은 경우 Target 을 만들지 않는다. Target 이 실행파일이 아니라고 make 유틸리티에 알려주어야 하는 경우가 몇 개 있는데 이때 사용하는 문법이 Phony Target 이다. 대표적으로 아래와 같은 목적으로 사용된다. 특정 명령을 조건 없이 수행하기 위하여 사용 clean 명령과 같이 항상 실행되어야 하는 명령이 있는 경우 clean 이라는 파일이 있다면 실제 clean 이 일어나지 않을수 도 있다. 이런 경우 Phony Target 이라는 문법을 통해 Target 이 실행파일이 아님을 알려주어 항상 clean 이 일어나게 한다. 퍼포먼스 개선을 위해 사용 두번째로..
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 에..