특수 NMAKE 매크로
NMAKE는 다양한 파일 이름 및 명령을 나타내는 몇 가지 특수 매크로를 제공합니다. 이러한 매크로 중 일부에 대한 한 가지 사용은 미리 정의된 유추 규칙에 있습니다. 모든 매크로와 마찬가지로 NMAKE에서 제공하는 매크로는 대/소문자를 구분합니다.
파일 이름 매크로
파일 이름 매크로는 종속성에 지정된 미리 정의된 as 파일 이름입니다(디스크의 전체 파일 이름 사양이 아님). 이러한 매크로는 호출할 때 괄호로 묶을 필요가 없습니다. 는 표시된 것 $
as 만 지정합니다.
매크로 | 의미 |
---|---|
$@ |
현재 대상의 전체 이름(경로, 기본 이름, 확장명) as 이 현재 지정되어 있습니다. |
$$@ |
현재 대상의 전체 이름(경로, 기본 이름, 확장명) as 이 현재 지정되어 있습니다. 종속성에 종속된 경우에만 as 유효합니다. |
$* |
현재 대상의 경로 및 기본 이름에서 파일 확장명을 뺀 값입니다. |
$** |
현재 대상의 모든 종속성입니다. |
$? |
현재 대상보다 이후 타임스탬프가 있는 모든 종속 |
$< |
현재 대상보다 이후 타임스탬프가 있는 종속 파일입니다. 유추 규칙의 명령에서만 유효합니다. |
미리 정의된 파일 이름 매크로의 일부를 지정하려면 매크로 한정자를 추가하고 수정된 매크로를 괄호로 묶습니다.
한정자 | 결과 파일 이름 부분 |
---|---|
D |
드라이브 및 디렉터리 |
B |
기본 이름 |
F |
기본 이름 및 확장 |
R |
드라이브와 디렉터리 및 기본 이름 |
재귀 매크로
재귀 매크로를 사용하여 NMAKE를 재귀적으로 호출합니다. 재귀 세션은 명령줄 및 환경 변수 매크로 및 Tools.ini
정보를 상속합니다. 메이크파일 정의 유추 규칙 또는 .SUFFIXES
.PRECIOUS
사양을 상속하지 않습니다. 재귀 NMAKE 세션에 매크로를 전달하는 세 가지 방법이 있습니다.
- 재귀 호출 전에 명령을 사용하여
SET
환경 변수를 설정합니다. - 재귀 호출에 대한 명령에서 매크로를 정의합니다.
- 또는 .에서 매크로를 정의합니다
Tools.ini
.
매크로 | 정의 |
---|---|
MAKE |
원래 NMAKE를 호출하는 데 사용된 명령입니다. 매크로는 $(MAKE) 전체 경로를 nmake.exe 제공합니다. |
MAKEDIR |
NMAKE가 호출되었을 때의 현재 디렉터리입니다. |
MAKEFLAGS |
현재 적용 중인 옵션입니다. as/$(MAKEFLAGS) 을 사용합니다. 이 /F 옵션은 포함되지 않습니다. |
명령 매크로와 옵션 매크로
명령 매크로는 Microsoft 제품에 대해 미리 정의됩니다. 옵션 매크로는 이러한 제품에 대한 옵션을 나타내며 기본적으로 정의되지 않습니다. 둘 다 미리 정의된 유추 규칙에 사용되며 설명 블록 또는 사용자 정의 유추 규칙에 사용할 수 있습니다. 명령 매크로는 옵션을 포함하여 명령줄의 일부 또는 전체를 나타내도록 다시 정의할 수 있습니다. 옵션 매크로는 정의되지 않은 상태로 두면 null 문자열을 생성합니다.
도구 | 명령 매크로 | 정의 as | 옵션 매크로 |
---|---|---|---|
매크로 어셈블러 | AS |
ml 또는 ml64 |
AFLAGS |
C 컴파일러 | CC |
cl |
CFLAGS |
C++ 컴파일러 | CPP |
cl |
CPPFLAGS |
C++ 컴파일러 | CXX |
cl |
CXXFLAGS |
리소스 컴파일러 | RC |
rc |
RFLAGS |
환경 변수 매크로
NMAKE는 세션이 시작되기 전에 존재하는 환경 변수에 대한 매크로 정의를 상속합니다. 운영 체제 환경에서 변수를 설정한 경우 NMAKE 매크로를 사용할 수 있습니다 as . 상속된 이름은 대문자로 변환됩니다. 상속은 전처리 전에 발생합니다. 환경 변수에서 상속된 매크로가 메이크파일에서 이름이 같은 매크로를 재정의하도록 하려면 /E 옵션을 사용합니다.
세션에서 환경 변수 매크로를 다시 정의할 수 있으며, 그러면 해당 환경 변수가 변경됩니다. SET 명령을 사용하여 환경 변수를 변경할 수도 있습니다. 그러나 SET 명령을 사용하여 세션에서 환경 변수를 변경해도 해당 매크로는 변경되지 않습니다.
예시:
PATH=$(PATH);\nonesuch
all:
echo %%PATH%%
이 예제에서 변경하면 PATH
해당 환경 변수 PATH
가 변경되며 경로에 추가됩니다 \nonesuch
.
환경 변수가 메이크파일에서 구문상 올바르지 않은 문자열로 정의된 as 경우 매크로가 생성되지 않고 경고가 생성되지 않습니다. 변수의 값에 달러 기호($)가 포함된 경우 NMAKE는 이를 매크로 호출의 시작 부분으로 해석합니다 as . 매크로를 사용하면 예기치 않은 동작이 발생할 수 있습니다.