Share via


메이크파일 전처리

전처리 지시문 및 식을 사용하여 NMAKE 세션을 제어할 수 있습니다. 전처리 지침은 메이크파일 또는 Tools.ini에 배치할 수 있습니다. 지시문을 사용하여 메이크파일을 조건부로 처리하고, 오류 메시지를 표시하고, 다른 메이크파일을 포함하고, 매크로를 정의하지 않고, 특정 옵션을 켜거나 끌 수 있습니다.

메이크파일 전처리 지시문

전처리 지시문은 대/소문자를 구분하지 않습니다. 선의 시작 부분에 초기 느낌표(!)가 나타나야 합니다. 들여쓰기를 위해 느낌표 뒤에 공백이나 탭이 0개 이상 나타날 수 있습니다.

  • !CMDSWITCHES{ +option | -option } ...

    나열된 각 옵션을 켜거나 끕니다. 공백 또는 탭은 또는 - 연산자 + 앞에 나타나야 합니다. 연산자와 옵션 문자 사이에 공백을 표시할 수 없습니다. 문자는 대/소문자를 구분하지 않으며 슬래시(/)없이 지정됩니다. 일부 옵션을 켜고 다른 옵션을 끄려면 별도의 사양을 !CMDSWITCHES사용합니다.

    /D, /I, /N/S 메이크파일에서 사용할 수 있습니다. 에서 Tools.ini, , 및 /?.를 제외한 /NOLOGO/F/HELP/X모든 옵션이 허용됩니다. 설명 블록에 지정된 변경 내용은 다음 설명 블록까지 적용되지 않습니다. 이 지시문 업데이트입니다. MAKEFLAGS변경 내용은 재귀 중에 상속됩니다(지정된 경우 MAKEFLAGS ).

  • !ERRORtext

    오류 U1050의 텍스트를 표시한 다음 , /I, .IGNORE!CMDSWITCHES또는 대시(-) 명령 한정자를 사용하는 경우에도 /KNMAKE를 중지합니다. 텍스트의 공백 또는 탭은 무시됩니다.

  • !MESSAGEtext

    텍스트를 표준 출력으로 표시합니다. 텍스트의 공백 또는 탭은 무시됩니다.

  • !INCLUDE [ < ] filename [ > ]

    파일 이름을 메이크파일로 읽은 다음 현재 메이크파일을 계속합니다. NMAKE는 먼저 지정된 디렉터리 또는 현재 디렉터리에서 파일 이름을 검색한 다음, 부모 메이크파일의 디렉터리를 재귀적으로 검색한 다음, 파일 이름이 매크로로 지정된 INCLUDE 디렉터리에서 꺾쇠괄호(< >)로 묶인 경우 처음에는 환경 변수로 INCLUDE 설정됩니다. 재귀 메이크파일로 설정 .PRECIOUS및 유추 규칙을 전달하는 .SUFFIXES 데 유용합니다.

  • !IFconstant_expression

    0이 아닌 값으로 계산되는 경우 또는 !ENDIF constant_expression 사이의 !IF!ELSE 문을 처리합니다.

  • !IFDEFmacro_name

    macro_name 정의된 경우와 그 다음 !ELSE!ENDIF 사이에 !IFDEF 문을 처리합니다. null 매크로는 정의된 것으로 간주됩니다.

  • !IFNDEFmacro_name

    다음 문 간 !IFNDEF 또는 !ELSE!ENDIF macro_name 정의되지 않은 경우 문을 처리합니다.

  • !ELSE[ IFconstant_expressionIFDEF | macro_name | IFNDEFmacro_name ]

    이전 !IF!IFDEF문 또는 !IFNDEF 문이 0으로 평가된 경우 다음 문 간에 !ELSE!ENDIF 문을 처리합니다. 선택적 키워드(keyword) 전처리를 추가로 제어할 수 있습니다.

  • !ELSEIF

    !ELSE IF의 동의어입니다.

  • !ELSEIFDEF

    !ELSE IFDEF의 동의어입니다.

  • !ELSEIFNDEF

    !ELSE IFNDEF의 동의어입니다.

  • !ENDIF

    또는 !IFDEF!IFNDEF 블록의 !IF끝을 표시합니다. 같은 줄에 있는 모든 텍스트 !ENDIF 는 무시됩니다.

  • !UNDEFmacro_name

    macro_name 정의 해제합니다.

메이크파일 전처리 식

!IF 또는 !ELSE IFconstant_expression 정수 상수(10진수 또는 C 언어 표기법), 문자열 상수 또는 명령으로 구성됩니다. 괄호를 사용하여 식을 그룹화합니다. 식은 C 스타일 서명된 긴 정수 산술 연산을 사용합니다. 숫자는 2147483647 범위 -2147483648 32비트 2의 보수 형식입니다.

식은 상수 값, 명령, 문자열, 매크로 및 파일 시스템 경로의 종료 코드에 대해 작동하는 연산자를 사용할 수 있습니다.

메이크파일 전처리 연산자

메이크파일 전처리 식에서는 상수 값, 명령의 종료 코드, 문자열, 매크로 및 파일 시스템 경로에 대해 작동하는 연산자를 사용할 수 있습니다. 식을 평가하기 위해 전처리기는 먼저 매크로를 확장한 다음 명령을 실행한 다음 작업을 수행합니다. 괄호 안의 명시적 그룹화 순서로 연산을 평가한 다음 연산자 우선 순위 순서로 계산합니다. 결과는 상수 값입니다.

DEFINED 연산자는 매크로 이름에서 작동하는 논리 연산자입니다. DEFINED( macro_name ) 식은 할당된 값이 없더라도 macro_name 정의된 경우 true입니다. DEFINED와 함께 !IF 사용하거나 !ELSE IF!ELSE IFDEF이에 해당합니다!IFDEF. 그러나 이러한 지시문과 DEFINED 달리 복잡한 식에서 사용할 수 있습니다.

EXIST 연산자는 파일 시스템 경로에서 작동하는 논리 연산자입니다. EXIST( path )경로가 있으면 true입니다. 이진 식에서 EXIST 결과를 사용할 수 있습니다. 경로에 공백이 포함된 경우 큰따옴표로 묶습니다.

두 문자열을 비교하려면 같음(==) 연산자 또는 같지 않음(!=) 연산자를 사용합니다. 문자열은 큰따옴표로 묶습니다.

정수 상수는 숫자 부정(), 보수() 및 논리 부정(-~!)에 단항 연산자를 사용할 수 있습니다.

식에서는 다음 연산자를 사용할 수 있습니다. 우선 순위가 동일한 연산자는 함께 그룹화되고 그룹은 우선 순위에 따라 내림차순으로 나열됩니다. 단항 연산자는 오른쪽 피연산자에 연결됩니다. 동일한 우선 순위의 이항 연산자는 왼쪽에서 오른쪽으로 피연산자를 연결합니다.

연산자 설명
DEFINED(macro_name) macro_name 현재 정의 상태에 대한 논리 값을 생성합니다.
EXIST(path) 경로에 파일이 존재하기 위한 논리적 값을 생성합니다.
! 단항 논리 연산자 NOT
~ 단항의 보수.
- 단항 부정 연산자
* 곱하기
/ 나누기
% 모듈러스(나머지)
+ 덧셈.
- 빼기
<< 비트 왼쪽으로 시프트
>> 비트 오른쪽으로 시프트
<= 작거나 같음.
>= 크거나 같음.
< 보다 작음
> 보다 큼
== 같음
!= 같지 않음
& 비트 AND입니다.
^ 비트 XOR
| 비트 OR
&& 논리적 AND
|| 논리적 OR

참고 항목

비트 XOR 연산자(^)는 이스케이프 문자와 동일하며 식에 사용될 때 이스케이프되어야 합니다(예: ^^).

전처리에서 프로그램 실행

전처리 중에 명령의 종료 코드를 사용하려면 대괄호([ ]) 내에서 인수를 사용하여 명령을 지정합니다. 명령이 실행되기 전에 모든 매크로가 확장됩니다. NMAKE는 명령 사양을 식에서 전처리를 제어하는 데 사용할 수 있는 명령의 종료 코드로 바꿉니다.

예시

!IF [my_command.exe arg1 arg2] != 0
!MESSAGE my_command.exe failed!
!ENDIF

참고 항목

NMAKE 참조