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.ini
yerleş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!CMDSWITCHES
kullanın.Yalnızca
/D
,/I
,/N
ve/S
bir derleme dosyasında kullanılabilir. içindeTools.ini
, , ,/X
/HELP
/NOLOGO
ve/?
dışındaki/F
tü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ştirmeleriMAKEFLAGS
; belirtilirseMAKEFLAGS
, yineleme sırasında değişiklikler devralınır.!ERROR
MetinU1050 hatasında metin görüntüler, ardından ,
/I
,.IGNORE
,!CMDSWITCHES
veya tire (-
) komut değiştiricisi kullanılıyor olsa/K
bile NMAKE'yi durdurur. Metin yoksaymadan önce boşluklar veya sekmeler.!MESSAGE
MetinMetni 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ındanINCLUDE
belirtilen dizinlerde açılı ayraçlar ()< >
içine alınırsa. Özyinelemeli derleme dosyalarına ayarları,.PRECIOUS
ve çıkarım kurallarını geçirmek.SUFFIXES
için yararlıdır.!IF
constant_expressionile sonraki
!ELSE
arasında veya!ENDIF
constant_expression sıfır olmayan bir değer olarak değerlendiriliyorsa deyimleri!IF
işler.!IFDEF
macro_nameile sonraki
!ELSE
arasında veya!ENDIF
macro_name tanımlanmışsa deyimleri!IFDEF
işler. Null bir makro tanımlandığı kabul edilir.!IFNDEF
macro_nameile sonraki
!ELSE
arasında veya!ENDIF
macro_name tanımlanmamışsa deyimleri!IFNDEF
işler.!ELSE
[IF
constant_expressionIFDEF
| macro_name |IFNDEF
macro_name ]Önceki
!IF
,!IFDEF
veya!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
,!IFDEF
veya!IFNDEF
bloğunun sonunu işaretler. Aynı satırdan sonraki!ENDIF
tüm metinler yoksayılır.!UNDEF
macro_namemacro_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. DEFINED
veya ile birlikte veya !ELSE IF
!ELSE IFDEF
ile !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