타겟-종속적인 변수 값( Target-specific Variable Values)
make
에 있는 변수값들은 보통 전역적이다; 즉, 그들이 평가된
위치와 상관없이 이들은 동일하다(물론 그들이 리셋되지 않는다면). 한가지
예외는 자동 변수들의 경우이다
(see section 자동 변수들(Automatic Variables)).
다른 예외는 타겟-종속 변수 값(target-specific variable
values)이다. 이 기능은 동일한 변수에 대해서, make
가 현재
빌드하고 있는 타겟에 기반해서, 다른 값들을 정의할 수 있도록
한다. 자동변수의 경우 이런 값들은 단지 타겟의 명령 스크립트의
내용안에서(그리고 다른 타겟-종속적인 할당에서)만 사용 가능하다.
타겟-종속적인 변수값은 다음과 같이 설정한다:
target ... : variable-assignment
또는 다음과 같이 정의한다:
target ... : override variable-assignment
다수의 target 값들은 타겟 리스트의 각 멤버에 대해서 타겟-종속적인 값을 개별적으로 생성한다.
variable-assignment 는 할당의 유효한 형태이면 아무거나 된다; 재귀적 (`='), 정적 (`:='), 덧붙이기 (`+=', 또는 조건 (`?='). variable-assignment에 나타나는 모든 변수들은 타겟의 내용물 안에서 평가된다: 그래서 임의의 사전-정의된 타겟-종속적인 변수 값들이 효력을 발휘할 것이다. 이 변수는 실제로 어떤 "전역" 값과도 구분이 된다는 점에 주목하자: 두 변수들이 동일한 취향(재귀적 vs. 정적)을 반드시 가질 필요는 없다.
타겟-종속적인 변수들은 다른 makefile 변수와 동일한 우선순위를
가진다. 명령행에서 주어진 변수들이(그리고 `-e' 옵션이 주어졌다면
환경에서 주어진 변수들이) 우선권을 가질것이다. override
를
지정하는 것은 타겟-종속 변수 값이 더 선호되도록 할 것이다.
타겟-종속적인 변수들의 특수한 기능이 하나 더 있다: 타겟-종속적인 변수를 정의할 때 그 변수의 값이 또한 이 타겟의 모든 종속물들에 대해서도 영향을 미친다(단 이런 종속물들이 그들 자신의 타겟-종속적인 변수 값으로써 그것을 오버라이드하지 않았다면 말이다). 그래서 예를 들면 다음과 같은 문장은:
prog : CFLAGS = -g prog : prog.o foo.o bar.o
CFLAGS
를 `prog'에 대한 명령 스크립트에서 `-g'로
설정할 것이다. 그러나 이것은 또한 CFLAGS
를 `prog.o',
`foo.o', 그리고 `bar.o'를 생성하는 명령 스크립트안에서,
그리고 이들의 종속물들을 생성하는 임의의 명령 스크립트들을 생성하는
명령 스크립트들 안에서 `-g'로 설정할 것이다.
패턴-종속적인 변수값(Pattern-specific Variable Values)
타겟-종속적인 변수값 (see section 타겟-종속적인 변수 값( Target-specific Variable Values)) 에 덧붙여서, GNU make
는 패턴-종속적인 변수값을
지원한다. 이 형에서 변수는 지정된 패턴과 일치하는 임의의 타겟에 대해서
정의된다. 이런식으로 정의된 변수들은, 그 타겟에 대해서 명시적으로
정의된 임으의 타겟-종속적인 변수들 이후에, 그리고 타겟 종속적인 변수가
어버이 타겟에 대해서 정의되기 전에, 검색된다.
패턴-종속적인 변수값은 다음과 같이 지정한다:
pattern ... : variable-assignment
또는 다음과 같이:
pattern ... : override variable-assignment
여기서 pattern 는 %-패턴이다. 타겟-종속 변수값과 동일하게 다수의
pattern 값들이 각 패턴에 대해서 개별적으로 패턴-종속 변수값을
생성한다. variable-assignment 는 유효한 할당이면 무엇이든
된다. 임의의 명령행 변수 설정이, override
가 지정되지 않았다면,
더 높은 우선순위를 가진다.
예를 들어서:
%.o : CFLAGS = -O
이것은 패턴 %.o
와 일치하는 모든 타겟들에 대해서 `-O'를
CFLAGS
의 값으로 할당할 것이다.
'기타' 카테고리의 다른 글
[android][cygwin] ndk-build sample compile할 때 compile error (0) | 2012.03.29 |
---|---|
[linux] bash shell wildcard (0) | 2012.03.26 |
[linux] vim에서 내용 정렬하기 (0) | 2012.03.12 |
[cygwin] clear 명령 (0) | 2012.02.24 |
OpenProj 캘린더 및 기본 작업시간 변경 설정. (0) | 2012.02.24 |