Derleme görevleri dosyası önişlemesi

Ön işleme yönergelerini ve ifadelerini kullanarak NMAKE oturumunu denetleyebilirsiniz. Ön işleme yönergeleri makefile veya içine Tools.iniyerleştirilebilir. Yönergeleri kullanarak, derleme dosyanızı koşullu olarak işleyebilir, hata iletilerini görüntüleyebilir, diğer derleme dosyalarını ekleyebilir, makro tanımlarını kaldırabilir ve belirli seçenekleri açabilir veya kapatabilirsiniz.

Derleme Görevleri Dosyası Önişleme Yönergeleri

Ön işleme yönergeleri büyük/küçük harfe duyarlı değildir. İlk ünlem işareti (!) satırın başında görünmelidir. Ünlem işaretinden sonra girinti için sıfır veya daha fazla boşluk veya sekme görünebilir.

  • !CMDSWITCHES{ +option | -option } ...

    Listelenen her seçeneği açar veya kapatır. Veya işlecinden + önce boşluklar veya - sekmeler görünmelidir. İşleç ile seçenek harfleri arasında boşluk görüntülenmez. Harfler büyük/küçük harfe duyarlı değildir ve eğik çizgi (/ ) olmadan belirtilir. Bazı seçenekleri açmak ve diğerlerini kapatmak için ayrı belirtimlerini !CMDSWITCHESkullanın.

    Yalnızca /D, /I, /Nve /S bir derleme dosyasında kullanılabilir. içinde Tools.ini, , , /X/HELP/NOLOGOve /?dışındaki /Ftüm seçeneklere izin verilir. Açıklama bloğunda belirtilen değişiklikler bir sonraki açıklama bloğuna kadar geçerli olmaz. Bu yönerge güncelleştirmeleri MAKEFLAGS; belirtilirse MAKEFLAGS , yineleme sırasında değişiklikler devralınır.

  • !ERRORMetin

    U1050 hatasında metin görüntüler, ardından , /I, .IGNORE, !CMDSWITCHESveya tire (-) komut değiştiricisi kullanılıyor olsa /Kbile NMAKE'yi durdurur. Metin yoksaymadan önce boşluklar veya sekmeler.

  • !MESSAGEMetin

    Metni standart çıktıya görüntüler. Metin yoksaymadan önce boşluklar veya sekmeler.

  • !INCLUDE [ < ] dosya adı [ > ]

    Dosya adını derleme dosyası olarak okur, ardından geçerli derleme dosyasıyla devam eder. NMAKE, dosya adını önce belirtilen veya geçerli dizinde arar, ardından herhangi bir üst derleme dosyasının dizinleri aracılığıyla özyinelemeli olarak, dosya adı başlangıçta ortam değişkenine INCLUDE ayarlanmış makro tarafından INCLUDE belirtilen dizinlerde açılı ayraçlar ()< > içine alınırsa. Özyinelemeli derleme dosyalarına ayarları, .PRECIOUSve çıkarım kurallarını geçirmek .SUFFIXES için yararlıdır.

  • !IFconstant_expression

    ile sonraki !ELSE arasında veya !ENDIF constant_expression sıfır olmayan bir değer olarak değerlendiriliyorsa deyimleri !IF işler.

  • !IFDEFmacro_name

    ile sonraki !ELSE arasında veya !ENDIF macro_name tanımlanmışsa deyimleri !IFDEF işler. Null bir makro tanımlandığı kabul edilir.

  • !IFNDEFmacro_name

    ile sonraki !ELSE arasında veya !ENDIF macro_name tanımlanmamışsa deyimleri !IFNDEF işler.

  • !ELSE[ IF constant_expression IFDEF | macro_name | IFNDEF macro_name ]

    Önceki !IF, !IFDEFveya !IFNDEF deyimi sıfır olarak değerlendirildiyse ve sonraki !ENDIF arasındaki !ELSE deyimleri işler. İsteğe bağlı anahtar sözcükler, ön işlemenin daha fazla denetimini sağlar.

  • !ELSEIF

    İçin eş anlamlı !ELSE IF.

  • !ELSEIFDEF

    İçin eş anlamlı !ELSE IFDEF.

  • !ELSEIFNDEF

    İçin eş anlamlı !ELSE IFNDEF.

  • !ENDIF

    Bir !IF, !IFDEFveya !IFNDEF bloğunun sonunu işaretler. Aynı satırdan sonraki !ENDIF tüm metinler yoksayılır.

  • !UNDEFmacro_name

    macro_name tanımlar.

Derleme görevleri dosyası önişlemlerindeki ifadeler

!IF veya !ELSE IF constant_expression tamsayı sabitlerinden (ondalık veya C dili gösteriminde), dize sabitlerinden veya komutlardan oluşur. İfadeleri gruplandırmak için parantez kullanın. İfadeler C stili işaretli uzun tamsayı aritmetik kullanır; sayılar, -2147483648 ile 2147483647 aralığındaki 32 bit ikinin tamamlayıcı biçimindedir.

İfadeler sabit değerler, komutlardan, dizelerden, makrolardan ve dosya sistemi yollarından çıkış kodları üzerinde hareket eden işleçler kullanabilir.

Derleme görevleri dosyası önişleme işleçleri

Makefile önişlem ifadeleri sabit değerler, komutlardan, dizelerden, makrolardan ve dosya sistemi yollarından çıkış kodları üzerinde işlem yapacak işleçler kullanabilir. İfadeyi değerlendirmek için, önişlemci önce makroları genişletir, ardından komutları yürütür ve ardından işlemleri gerçekleştirir. İşlemleri parantez içinde açık gruplandırma sırasına göre ve sonra işleç önceliği sırasına göre değerlendirir. Sonuç sabit bir değerdir.

DEFINED işleci, makro adına göre hareket eden bir mantıksal işleçtir. macro_name tanımlanmışsa, atanmış bir değeri olmasa bile ifade DEFINED( macro_name ) doğrudur. DEFINEDveya ile birlikte veya !ELSE IF !ELSE IFDEFile !IF eşdeğerdir!IFDEF. Ancak, bu yönergelerin aksine, DEFINED karmaşık ifadelerde kullanılabilir.

işleci EXIST , dosya sistemi yolunda hareket eden bir mantıksal işleçtir. EXIST( path ), yol varsa doğrudur. sonucu EXIST ikili ifadelerde kullanılabilir. Yol boşluk içeriyorsa, çift tırnak içine alın.

İki dizeyi karşılaştırmak için equality (==) işlecini veya eşitsizlik (!=) işlecini kullanın. Dizeleri çift tırnak içine alın.

Tamsayı sabitleri sayısal olumsuzlama ( ), birinin tamamlayıcısı (- ) ve mantıksal olumsuzlama (~! için birli işleçleri kullanabilir.

İfadeler aşağıdaki işleçleri kullanabilir. Eşit öncelik işleçleri birlikte gruplandırılır ve gruplar azalan öncelik sırasına göre listelenir. Birli işleçler sağdaki işlenenle ilişkilendirir. Eşit öncelikli ikili işleçler, işlenenleri soldan sağa ilişkilendirir.

Operator Açıklama
DEFINED( macro_name ) macro_name geçerli tanım durumu için mantıksal bir değer üretir.
EXIST(yol ) Yoldaki bir dosyanın varlığı için mantıksal bir değer üretir.
! Birli mantıksal DEĞİl.
~ Birlinin tamamlayıcısı.
- Bire bir olumsuzlama.
* Çarpma.
/ Bölüm.
% Modulus (kalan).
+ İlave.
- Çıkarma.
<< Bit düzeyinde sola kaydırma.
>> Bit düzeyinde sağa kaydırma.
<= Küçük veya eşit.
>= Büyüktür veya eşittir.
< Küçüktür.
> Büyüktür.
== Eşitlik.
!= Eşitsizlik.
& Bit düzeyinde VE.
^ Bit düzeyinde XOR.
| Bit düzeyinde VEYA.
&& Mantıksal VE.
|| Mantıksal VEYA.

Not

Bit düzeyinde XOR işleci (^), kaçış karakteriyle aynıdır ve bir ifadede kullanıldığında kaçış karakterinden (olarak ^^) çıkarılmalıdır.

Programı önişlemde yürütme

Ön işleme sırasında bir komutun çıkış kodunu kullanmak için, komutu köşeli ayraç ([ ] içinde bağımsız değişkenlerle birlikte) belirtin. Komut yürütülmeden önce tüm makrolar genişletilir. NMAKE, komut belirtimini komutun çıkış koduyla değiştirir ve bu kod ön işlemeyi denetlemek için bir ifadede kullanılabilir.

Örnek

!IF [my_command.exe arg1 arg2] != 0
!MESSAGE my_command.exe failed!
!ENDIF

Ayrıca bkz.

NMAKE Başvurusu