/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 時,必須將輸出重新導向至 stdout 做為 MIDL 編譯器 /cpp_opt 參數的 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 的 C 預處理器以及匯入的 IDL 檔案,以及針對任何存在的對應 ACF 檔案。
當 /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。 |
是 | No | 使用與上述相同的參數叫用指定的預處理器二進位檔。 |
No | 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