/cpp_cmd switch
Sakelar /cpp_cmd menentukan pra-prosesor yang digunakan pengkompilasi MIDL untuk memproses file input sebelumnya.
midl /cpp_cmd "C_preprocessor_binary"
-
C_preprocessor_binary
-
Menentukan perintah yang memanggil pra-prosesor. Perintah ini memungkinkan pengembang untuk mengambil alih prapemrosedur default. Secara default, MIDL memanggil pengkompilasi Microsoft C/C++ dari lingkungan build komputer build.
Argumen C_preprocessor_binary ke sakelar dapat menentukan jalur lengkap; akhiran exe dan tanda kutip bersifat opsional. Biasanya, pengembang menggunakan sakelar untuk memilih versi tertentu dari pra-prosesor Microsoft C/C++ atau yang setara di lingkungan build. Dalam hal ini, tidak perlu menggunakan sakelar /cpp_opt dengan /cpp_cmd.
Saat menggunakan praproscessor non-Microsoft, terutama ketika preprocessor yang ditentukan tidak mengarahkan outputnya ke stdout, sakelar pengkompilasi C yang mengalihkan output ke stdout sebagai bagian dari sakelar kompilator /cpp_opt MIDL harus ditentukan. Lihat Persyaratan C-Preprocessor untuk MIDL untuk detailnya
Praprosesor dipanggil oleh string perintah yang dibentuk dari informasi yang diberikan kepada pengkompilasi MIDL oleh /cpp_cmd, /cpp_opt, /D, /I, dan sakelar /U . Tabel berikut ini meringkas bagaimana string perintah dibangun untuk setiap kombinasi /cpp_cmd dan /cpp_opt beralih.
Ketika sakelar /cpp_cmd tidak ditentukan, pengkompilasi MIDL memanggil pengkompilasi Microsoft C/C++. MIDL menggunakan biner Cl.exe yang ditemukan di lingkungan build.
Ketika sakelar /cpp_opt tidak ada, kompilator MIDL menggabungkan string yang ditentukan oleh sakelar /cpp_cmd dengan informasi yang ditentukan oleh opsi MIDL /I, /D dan /U . String /E juga digabungkan ke string pemanggilan C-compiler untuk menunjukkan bahwa kompilator C/C++ harus melakukan praproscessing saja. Sakelar /nologo ditambahkan untuk menekan banner pengompilasi C/C++. Pengkompilasi MIDL menggunakan string yang digabungkan untuk memanggil praprosesor C untuk IDL tingkat atas serta file IDL yang diimpor, dan juga untuk file ACF yang ada dan sesuai.
Ketika sakelar /cpp_opt ada, yang seharusnya merupakan kasus langka untuk platform 32-bit dan 64-bit saat ini, kompilator MIDL menggabungkan string yang ditentukan oleh sakelar /cpp_cmd dengan string yang ditentukan oleh sakelar /cpp_opt . Pengkompilasi MIDL menggunakan string yang digabungkan untuk memanggil biner praproscessor yang ditunjukkan sebagai pengganti prapemrosuaian default. Ketika sakelar /cpp_opt ada, opsi pengkompilasi MIDL yang ditentukan oleh sakelar /I, /D, dan /U atau sakelar pengkompilasi C /E tidak digabungkan dengan string. Anda harus menyediakan opsi /E, atau yang setara, sebagai bagian dari string.
/cpp_cmd hadir? | /cpp_opt hadir? | Deskripsi |
---|---|---|
Tidak (default) | Tidak (default) | Memanggil pengkompilasi Microsoft C/C++ default dengan pengaturan yang diperoleh dari sakelar MIDL /I, /D dan /U . Menambahkan sakelar praprosesor /E dan /nologo. |
Ya | Tidak | Memanggil biner praprosesor yang ditunjukkan dengan sakelar yang sama seperti di atas. |
Tidak | Ya | Memanggil pengkompilasi Microsoft C dengan opsi yang ditentukan. Tidak menggunakan opsi MIDL /I, /D, /U . Anda harus menyediakan /E sebagai bagian dari /cpp_opt. |
Ya | Ya | Memanggil biner pra-prosesor yang ditentukan hanya dengan opsi yang ditentukan. Anda harus menggunakan tanda kutip. |
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