Параметр /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_opt с параметром /cpp_cmd.
При использовании препроцессора, не являющегося корпорацией Майкрософт, особенно если указанный препроцессор не направляет свои выходные данные в stdout, необходимо указать параметр компилятора C, который перенаправляет выходные данные в stdout как часть параметра /cpp_opt компилятора MIDL. Дополнительные сведения см. в разделе Требования К препроцессору C для MIDL .
Препроцессор вызывается командной строкой, которая формируется из сведений, предоставляемых компилятору MIDL параметрами /cpp_cmd, /cpp_opt, /D, /I и /U . В следующей таблице показано, как создается командная строка для каждого сочетания параметров /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 использует объединенную строку для вызова препроцессора C для IDL верхнего уровня, а также импортированных IDL-файлов, а также для любых имеющихся соответствующих файлов ACF.
При наличии параметра /cpp_opt , что является редким случаем для текущих 32-разрядных и 64-разрядных платформ, компилятор MIDL объединяет строку, указанную параметром /cpp_cmd , со строкой, указанной параметром /cpp_opt . Компилятор MIDL использует объединенную строку для вызова указанного двоичного файла препроцессора вместо препроцессора по умолчанию. При наличии параметра /cpp_opt ни параметры компилятора MIDL, заданные параметрами /I, /D и /U , ни параметр компилятора C /E не объединяются со строкой. В качестве части строки необходимо указать параметр /E или его эквивалент.
/cpp_cmd присутствует? | /cpp_opt присутствует? | Описание |
---|---|---|
Нет (по умолчанию) | Нет (по умолчанию) | Вызывает компилятор Microsoft C/C++ по умолчанию с параметрами, полученными из параметров MIDL /I, /D и /U . Добавляет параметры препроцессора /E и /nologo. |
Да | Нет | Вызывает указанный двоичный файл препроцессора с теми же параметрами, что и выше. |
Нет | Да | Вызывает компилятор Microsoft C с указанными параметрами. Не использует параметры MIDL /I, /D, /U . Необходимо указать параметр /E в составе /cpp_opt. |
Да | Да | Вызывает указанный двоичный файл препроцессора только с указанными параметрами. Необходимо использовать кавычки. |
midl /cpp_cmd d:\nt\tools\ia64\cl.exe /DFLAG=TRUE /Ic:\inc имя_файла.idl
midl /cpp_cmd "mycpp" /DFLAG=TRUE /Ic:\inc имя_файла.idl
midl /cpp_opt "/E /DFLAG=TRUE /Ic:\inc" имя_файла.idl
midl /cpp_cmd "cl" /cpp_opt "/E /DFLAG=TRUE /Ic:\inc" имя_файла.idl