/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 プリプロセッサを呼び出します。
/cpp_opt スイッチが存在する場合(現在の 32 ビットおよび 64 ビット プラットフォームではまれなケースである必要があります)、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 を追加します。 |
はい | いいえ | 上記と同じスイッチを使用して、指定されたプリプロセッサ バイナリを呼び出します。 |
いいえ | はい | 指定したオプションを使用して Microsoft C コンパイラを呼び出します。 MIDL /I、 /D、 /U オプションは使用しません。 /cpp_optの一部として /E を指定する必要があります。 |
はい | はい | 指定したオプションのみを使用して、指定されたプリプロセッサ バイナリを呼び出します。 引用符を使用する必要があります。 |
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