Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Anda dapat mengontrol sesi NMAKE dengan menggunakan direktif dan ekspresi pra-pemrosesan. Instruksi praproses dapat ditempatkan di makefile atau di Tools.ini. Dengan menggunakan direktif, Anda dapat memproses makefile Anda secara kondisional, menampilkan pesan kesalahan, menyertakan makefiles lain, melepaskan makro, dan mengaktifkan atau menonaktifkan opsi tertentu.
Arahan Praproses Makefile
Arahan pra-pemrosesan tidak peka huruf besar/kecil. Tanda seru awal (!) harus muncul di awal baris. Nol atau lebih spasi atau tab dapat muncul setelah tanda seru, untuk indentasi.
!CMDSWITCHES{+opsi opsi-| } ...Mengaktifkan atau menonaktifkan setiap opsi yang tercantum. Spasi atau tab harus muncul sebelum
+operator atau-. Tidak ada spasi yang dapat muncul antara operator dan huruf opsi. Huruf tidak peka huruf besar/kecil dan ditentukan tanpa garis miring (/). Untuk mengaktifkan beberapa opsi dan menonaktifkan yang lain, gunakan spesifikasi terpisah dari!CMDSWITCHES.Hanya
/D,/I,/N, dan/Sdapat digunakan dalam makefile. DalamTools.ini, semua opsi diizinkan kecuali/F, ,/HELP,/NOLOGO,/Xdan/?. Perubahan yang ditentukan dalam blok deskripsi tidak berlaku hingga blok deskripsi berikutnya. PembaruanMAKEFLAGSdirektif ini ; perubahan diwariskan selama rekursi jikaMAKEFLAGSditentukan.!ERRORTeksMenampilkan teks dalam kesalahan U1050, lalu menghentikan NMAKE, bahkan jika
/K, ,.IGNORE/I,!CMDSWITCHES, atau pengubah perintah tanda hubung (-) digunakan. Spasi atau tab sebelum teks diabaikan.!MESSAGETeksMenampilkan teks ke output standar. Spasi atau tab sebelum teks diabaikan.
!INCLUDE[<] nama file [>]Membaca nama file sebagai makefile, lalu melanjutkan dengan makefile saat ini. NMAKE mencari nama file terlebih dahulu di direktori yang ditentukan atau saat ini, lalu secara rekursif melalui direktori makefiles induk apa pun, maka, jika nama file diapit oleh tanda kurung sudut (
< >), dalam direktori yang ditentukan olehINCLUDEmakro, yang awalnya diatur keINCLUDEvariabel lingkungan. Berguna untuk meneruskan.SUFFIXESpengaturan,.PRECIOUS, dan aturan inferensi ke makefiles rekursif.!IFconstant_expressionMemproses pernyataan antara
!IFdan berikutnya!ELSEatau!ENDIFjika constant_expression mengevaluasi ke nilai bukan nol.!IFDEFmacro_nameMemproses pernyataan antara
!IFDEFdan berikutnya!ELSEatau!ENDIFjika macro_name ditentukan. Makro null dianggap ditentukan.!IFNDEFmacro_nameMemproses pernyataan antara
!IFNDEFdan berikutnya!ELSEatau!ENDIFjika macro_name tidak ditentukan.!ELSE[IFconstant_expression |IFDEFmacro_name macro_name ] |IFNDEFMemproses pernyataan antara
!ELSEdan berikutnya!ENDIFjika pernyataan sebelumnya!IF, ,!IFDEFatau!IFNDEFdievaluasi ke nol. Kata kunci opsional memberikan kontrol lebih lanjut terhadap prapemroscesing.!ELSEIFSinonim untuk
!ELSE IF.!ELSEIFDEFSinonim untuk
!ELSE IFDEF.!ELSEIFNDEFSinonim untuk
!ELSE IFNDEF.!ENDIFMenandai akhir
!IFblok , ,!IFDEFatau!IFNDEF. Teks apa pun setelah!ENDIFpada baris yang sama diabaikan.!UNDEFmacro_nameTidak terdefinis macro_name.
Ekspresi dalam praproses makefile
!IF atau !ELSE IF constant_expression terdiri dari konstanta bilangan bulat (dalam notasi desimal atau bahasa C), konstanta string, atau perintah. Gunakan tanda kurung untuk mengelompokkan ekspresi. Ekspresi menggunakan aritmatika bilangan bulat panjang yang ditandatangani gaya C; angka dalam bentuk pelengkap dua 32-bit dalam rentang -2147483648 ke 2147483647.
Ekspresi dapat menggunakan operator yang bertindak berdasarkan nilai konstanta, kode keluar dari perintah, string, makro, dan jalur sistem file.
Operator praproses makefile
Ekspresi praproses makefile dapat menggunakan operator yang bertindak berdasarkan nilai konstanta, kode keluar dari perintah, string, makro, dan jalur sistem file. Untuk mengevaluasi ekspresi, praprosesor terlebih dahulu memperluas makro, lalu menjalankan perintah, lalu melakukan operasi. Ini mengevaluasi operasi dalam urutan pengelompokan eksplisit dalam tanda kurung, dan kemudian dalam urutan prioritas operator. Hasilnya adalah nilai konstanta.
Operator DEFINED adalah operator logis yang bertindak berdasarkan nama makro. Ekspresi DEFINED( macro_name ) ini benar jika macro_name ditentukan, meskipun tidak memiliki nilai yang ditetapkan. DEFINEDdalam kombinasi dengan atau !ELSE IF setara !IFDEF dengan !IF atau !ELSE IFDEF. Namun, tidak seperti arahan ini, DEFINED dapat digunakan dalam ekspresi kompleks.
Operator EXIST adalah operator logis yang bertindak pada jalur sistem file. EXIST( path ) adalah true jika jalur ada. Hasil dari EXIST dapat digunakan dalam ekspresi biner. Jika jalur berisi spasi, sertakan dalam tanda kutip ganda.
Untuk membandingkan dua string, gunakan operator kesetaraan (==) atau operator ketidaksetaraan (!=). Sertakan string dalam tanda kutip ganda.
Konstanta bilangan bulat dapat menggunakan operator unary untuk negasi numerik (-), pelengkap seseorang (~), dan negasi logis (!).
Ekspresi dapat menggunakan operator berikut. Operator dengan prioritas yang sama dikelompokkan bersama-sama, dan grup tercantum dalam urutan prioritas yang menurun. Operator unary mengaitkan dengan operand di sebelah kanan. Operator biner dengan operan terkait prioritas yang sama dari kiri ke kanan.
| Operator | Deskripsi |
|---|---|
DEFINED( macro_name ) |
Menghasilkan nilai logis untuk status definisi macro_name saat ini. |
EXIST(jalan ) |
Menghasilkan nilai logis untuk keberadaan file di jalur. |
! |
LOGIS tidak sah TIDAK. |
~ |
Pelengkap unary. |
- |
Negasi unary. |
* |
Perkalian. |
/ |
Pembagian. |
% |
Modulus (sisanya). |
+ |
Penambahan. |
- |
Pengurangan. |
<< |
Bitwise shift kiri. |
>> |
Pergeseran bit ke kanan. |
<= |
Kurang dari atau sama dengan. |
>= |
Lebih besar dari atau sama dengan. |
< |
Kurang. |
> |
Lebih besar dari. |
== |
Kesetaraan. |
!= |
Ketidaksetaraan. |
& |
Bitwise DAN. |
^ |
Bitwise XOR. |
| |
Bitwise ATAU. |
&& |
Logika AND. |
|| |
Logika-OR. |
Catatan
Operator XOR bitwise (^) sama dengan karakter escape, dan harus diloloskan (sebagai ^^) saat digunakan dalam ekspresi.
Menjalankan program dalam pra-pemrosesan
Untuk menggunakan kode keluar perintah selama pra-pemrosesan, tentukan perintah, dengan argumen apa pun, dalam tanda kurung siku ([ ]). Makro apa pun diperluas sebelum perintah dijalankan. NMAKE mengganti spesifikasi perintah dengan kode keluar perintah, yang dapat digunakan dalam ekspresi untuk mengontrol pra-pemrosesan.
Contoh
!IF [my_command.exe arg1 arg2] != 0
!MESSAGE my_command.exe failed!
!ENDIF