Modificador /cpp_cmd
El modificador /cpp_cmd especifica el preprocesador que el compilador MIDL usa para preprocesar archivos de entrada.
midl /cpp_cmd "C_preprocessor_binary"
-
C_preprocessor_binary
-
Especifica el comando que invoca el preprocesador. Este comando permite a los desarrolladores invalidar el preprocesador predeterminado. De forma predeterminada, MIDL invoca el compilador de Microsoft C/C++ desde el entorno de compilación de la máquina de compilación.
El argumento C_preprocessor_binary al modificador puede especificar la ruta de acceso completa; El sufijo exe y las comillas son opcionales. Normalmente, los desarrolladores usan el modificador para elegir una versión determinada del preprocesador de Microsoft C/C++ o equivalente en el entorno de compilación. En este caso, no es necesario usar el modificador /cpp_opt con /cpp_cmd.
Cuando se usa un preprocesador que no es de Microsoft, especialmente cuando el preprocesador especificado no dirige su salida a stdout, se debe especificar el modificador del compilador de C que redirige la salida a stdout como parte del modificador del compilador MIDL /cpp_opt . Consulte C-Preprocessor Requirements for MIDL (Requisitos del preprocesador de C para MIDL ) para obtener más información.
El preprocesador se invoca mediante una cadena de comando formada a partir de la información proporcionada al compilador MIDL por /cpp_cmd, /cpp_opt, /D, /I y /U modificadores. En la tabla siguiente se resume cómo se construye la cadena de comando para cada combinación de modificadores /cpp_cmd y /cpp_opt .
Cuando no se especifica el modificador /cpp_cmd , el compilador MIDL invoca al compilador de Microsoft C/C++. MIDL usa un archivo binario Cl.exe que se encuentra en el entorno de compilación.
Cuando el modificador /cpp_opt no está presente, el compilador MIDL concatena la cadena especificada por el modificador /cpp_cmd con la información especificada por las opciones MIDL /I, /D y /U . La cadena /E también se concatena en la cadena de invocación del compilador de C para indicar que el compilador de C/C++ solo debe realizar el preprocesamiento. El modificador /nologo se agrega para suprimir el banner del compilador de C/C++. El compilador MIDL usa la cadena concatenada para invocar el preprocesador de C para idL de nivel superior, así como archivos IDL importados, y también para cualquier archivo ACF actual.
Cuando el modificador /cpp_opt está presente, que debe ser un caso poco frecuente para las plataformas actuales de 32 y 64 bits, el compilador MIDL concatena la cadena especificada por el modificador /cpp_cmd con la cadena especificada por el modificador /cpp_opt . El compilador MIDL usa la cadena concatenada para invocar el binario del preprocesador indicado en lugar del preprocesador predeterminado. Cuando el modificador /cpp_opt está presente, ni las opciones del compilador MIDL especificadas por los modificadores /I, /D y /U ni el modificador del compilador de C /E se concatenan con la cadena. Debe proporcionar la opción /E, o equivalente, como parte de la cadena.
/cpp_cmd presente? | /cpp_opt presente? | Descripción |
---|---|---|
No (valor predeterminado) | No (valor predeterminado) | Invoca el compilador predeterminado de Microsoft C/C++ con la configuración obtenida de los modificadores MIDL /I, /D y /U . Agrega los modificadores de preprocesador /E y /nologo. |
Sí | No | Invoca el binario del preprocesador indicado con los mismos modificadores que anteriormente. |
No | Sí | Invoca el compilador de Microsoft C con las opciones especificadas. No usa las opciones MIDL /I, /D, /U . Debe proporcionar /E como parte de /cpp_opt. |
Sí | Sí | Invoca el binario del preprocesador especificado solo con opciones especificadas. Debe usar comillas. |
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