/cpp_cmd 스위치
/cpp_cmd 스위치는 MIDL 컴파일러가 입력 파일을 전처리하는 데 사용하는 전처리기를 지정합니다.
midl /cpp_cmd "C_preprocessor_binary"
-
C_preprocessor_binary
-
전처리기를 호출하는 명령을 지정합니다. 이 명령을 사용하면 개발자가 기본 전처리기를 재정의할 수 있습니다. 기본적으로 MIDL은 빌드 머신의 빌드 환경에서 Microsoft C/C++ 컴파일러를 호출합니다.
스위치에 대한 C_preprocessor_binary 인수는 전체 경로를 지정할 수 있습니다. exe 접미사와 따옴표는 선택 사항입니다. 일반적으로 개발자는 스위치를 사용하여 빌드 환경에서 특정 버전의 Microsoft C/C++ 전처리기 또는 해당 버전을 선택합니다. 이 경우 /cpp_cmd /cpp_opt 스위치를 사용할 필요가 없습니다.
Microsoft가 아닌 전처리기를 사용하는 경우, 특히 지정된 전처리기가 해당 출력을 stdout으로 전달하지 않는 경우 MIDL 컴파일러 /cpp_opt 스위치의 일부로 출력을 stdout으로 리디렉션하는 C 컴파일러 스위치를 지정해야 합니다. 자세한 내용은 MIDL에 대한 C-전처리기 요구 사항을 참조하세요.
전처리기는 /cpp_cmd, /cpp_opt, /D, /I 및 /U 스위치에 의해 MIDL 컴파일러에 제공된 정보에서 형성된 명령 문자열에 의해 호출됩니다. 다음 표에서는 /cpp_cmd 및 /cpp_opt 스위치의 각 조합에 대해 명령 문자열을 구성하는 방법을 요약합니다.
/cpp_cmd 스위치를 지정하지 않으면 MIDL 컴파일러는 Microsoft C/C++ 컴파일러를 호출합니다. MIDL은 빌드 환경에 있는 Cl.exe 이진 파일을 사용합니다.
/cpp_opt 스위치가 없으면 MIDL 컴파일러는 /cpp_cmd 스위치에 지정된 문자열을 MIDL /I, /D 및 /U 옵션으로 지정된 정보와 연결합니다. 문자열 /E는 C/C++ 컴파일러가 전처리만 수행해야 함을 나타내기 위해 C-컴파일러 호출 문자열에도 연결됩니다. /nologo 스위치가 추가되어 C/C++ 컴파일러 배너를 표시하지 않습니다. MIDL 컴파일러는 연결된 문자열을 사용하여 최상위 IDL 및 가져온 IDL 파일 및 현재 해당 ACF 파일에 대한 C 전처리기를 호출합니다.
현재 32비트 및 64비트 플랫폼의 경우 드문 경우인 /cpp_opt 스위치가 있는 경우 MIDL 컴파일러는 /cpp_cmd 스위치에서 지정한 문자열을 /cpp_opt 스위치에 지정된 문자열과 연결합니다. MIDL 컴파일러는 연결된 문자열을 사용하여 기본 전처리기 대신 표시된 전처리기 이진 파일을 호출합니다. /cpp_opt 스위치가 있으면 /I, /D 및 /U 스위치로 지정된 MIDL 컴파일러 옵션이나 C 컴파일러 스위치 /E가 문자열과 연결되지 않습니다. 문자열의 일부로 /E 옵션 또는 해당 옵션을 제공해야 합니다.
/cpp_cmd 있습니까? | /cpp_opt 있습니까? | Description |
---|---|---|
아니요(기본값) | 아니요(기본값) | MIDL /I, /D 및 /U 스위치에서 가져온 설정을 사용하여 기본 Microsoft C/C++ 컴파일러를 호출합니다. 전처리기 스위치 /E 및 /nologo를 추가합니다. |
Yes | 아니요 | 위와 동일한 스위치를 사용하여 표시된 전처리기 이진 파일을 호출합니다. |
아니요 | 예 | 지정된 옵션을 사용하여 Microsoft C 컴파일러를 호출합니다. MIDL /I, /D, /U 옵션을 사용하지 않습니다. /E를 /cpp_opt 일부로 제공해야 합니다. |
Yes | Yes | 지정된 옵션만 사용하여 지정된 전처리기 이진 파일을 호출합니다. 따옴표를 사용해야 합니다. |
midl /cpp_cmd d:\nt\tools\ia64\cl.exe /DFLAG=TRUE /Ic:\inc filename.idl
midl /cpp_cmd "mycpp" /DFLAG=TRUE /Ic:\inc filename.idl
midl /cpp_opt "/E /DFLAG=TRUE /Ic:\inc" filename.idl
midl /cpp_cmd "cl" /cpp_opt "/E /DFLAG=TRUE /Ic:\inc" filename.idl