Bu, Ubuntu Online, Fedora Online, Windows çevrimiçi emülatörü veya MAC OS çevrimiçi emülatörü gibi birden fazla ücretsiz çevrimiçi iş istasyonumuzdan birini kullanarak OnWorks ücretsiz barındırma sağlayıcısında çalıştırılabilen komut pmake'dir.
Program:
ADI
b yapmak - program bağımlılıklarını koruyun
SİNOPSİS
b yapmak [-BeikNnqrstWwX] [-C rehber] [-D değişken] [-d bayraklar] [-f makefile] [-I rehber]
[-J özel] [-j maksimum iş sayısı] [-m rehber] [-T dosya] [-V değişken] [değişken=değer]
[hedef Kendi ID’n ile mağazalarını oluştur]
AÇIKLAMA
b yapmak diğer programların bakımını basitleştirmek için tasarlanmış bir programdır. Onun girişi bir
programların ve diğer dosyaların bağlı olduğu dosyalara ilişkin özelliklerin listesi. Eğer hayırsa -f
makefile makefile seçeneği verilmiş, b yapmak açmaya çalışacak'makefile' sonra 'Makefile' içinde
özellikleri bulmak için. Eğer dosya '.bağlı olmak' var, okunur (bkz. mkdep(1)).
Bu kılavuz sayfası yalnızca bir başvuru belgesi olarak tasarlanmıştır. Daha kapsamlı bir açıklama için
of b yapmak ve makefiles, lütfen bakın PMmake - A Klavuz.
b yapmak içeriğini hazırlayacak MAKEFLAGLAR komut satırına ortam değişkeni
onları ayrıştırmadan önce argümanlar.
Seçenekler şunlardır:
-B Komut başına tek bir kabuk çalıştırarak geriye dönük uyumlu olmaya çalışın ve
bir bağımlılık satırının kaynaklarını sırayla yapmak için komutları yürütmek.
-C rehber
Geçmek rehber makefile dosyalarını okumadan veya başka bir şey yapmadan önce. Eğer
çoklu -C seçenekler belirtilir, her biri bir öncekine göre yorumlanır:
-C / -C vb eşdeğerdir -C / Etc.
-D değişken
Tanımlama değişken küresel bağlamda 1 olmak.
-d [-]bayraklar
Hata ayıklamayı açın ve hangi bölümlerini belirtin b yapmak hata ayıklama yazdırmak için
bilgi. Bayrakların önüne '-' gelmediği sürece, bayraklara eklenirler. MAKEFLAGLAR
ortam değişkeni ve herhangi bir çocuk yapma süreçleri tarafından işlenecektir. Varsayılan olarak,
hata ayıklama bilgileri standart hatayla yazdırılır, ancak bu, kullanılarak değiştirilebilir
the F hata ayıklama bayrağı. Hata ayıklama çıktısı her zaman arabelleğe alınmaz; ek olarak, eğer
hata ayıklama etkinleştirilir ancak hata ayıklama çıktısı standart çıktıya yönlendirilmez, ardından
standart çıktı satır arabelleğine alınır. Bayraklar aşağıdakilerden biri veya birkaçıdır:
A Tüm olası hata ayıklama bilgilerini yazdırın; hepsini belirtmekle eşdeğer
hata ayıklama bayrakları.
a Arşiv arama ve önbelleğe alma hakkında hata ayıklama bilgilerini yazdırın.
C Geçerli çalışma dizini hakkında hata ayıklama bilgilerini yazdırın.
c Koşullu değerlendirme hakkında hata ayıklama bilgilerini yazdırın.
d Dizin arama ve önbelleğe alma hakkında hata ayıklama bilgilerini yazdırın.
e Başarısız komutlar ve hedefler hakkında hata ayıklama bilgilerini yazdırın.
F[+]Dosya
Hata ayıklama çıktısının nereye yazılacağını belirtin. Bu son bayrak olmalı,
çünkü argümanın geri kalanını tüketir. eğer karakter
'F' bayrağı '+' olduktan hemen sonra, dosya şurada açılacaktır:
ekleme modu; aksi takdirde dosyanın üzerine yazılacaktır. Dosya adı ise
'stdout' veya 'stderr' daha sonra hata ayıklama çıktısı standarda yazılacaktır
sırasıyla çıktı veya standart hata çıktı dosyası tanımlayıcıları (ve '+'
seçeneğin etkisi yoktur). Aksi takdirde, çıktı adlı kişiye yazılacaktır.
dosya. Dosya adı '.%d' ile bitiyorsa, '%d' pid ile değiştirilir.
f Döngü değerlendirmesi hakkında hata ayıklama bilgilerini yazdırın.
g1 Herhangi bir şey yapmadan önce giriş grafiğini yazdırın.
g2 Her şeyi yaptıktan sonra veya hatadan çıkmadan önce giriş grafiğini yazdırın.
g3 Hatadan çıkmadan önce giriş grafiğini yazdırın.
j Birden çok mermi çalıştırma hakkında hata ayıklama bilgilerini yazdırın.
l Ön ekli olup olmadıklarına bakılmaksızın Makefiles'de komutları yazdırın
'@' veya diğer "sessiz" bayraklarla. "Gürültülü" davranış olarak da bilinir.
M Hedeflerle ilgili "meta" modu kararları hakkında hata ayıklama bilgilerini yazdırın.
m Değişiklik de dahil olmak üzere hedef oluşturma hakkında hata ayıklama bilgilerini yazdırın
tarih.
n Komutları çalıştırırken oluşturulan geçici komut komut dosyalarını silmeyin.
Bu geçici komut dosyaları, tarafından atıfta bulunulan dizinde oluşturulur.
TMPDIR ortam değişkeni veya / Tmp TMPDIR ayarlanmamışsa veya
boş dize. Geçici komut dosyaları tarafından oluşturulur mkstemp(3) ve sahip
formun isimleri yapmakXXXXXX. NOT: Bu, TMPDIR'da birçok dosya oluşturabilir veya
/ Tmp, bu yüzden dikkatli kullanın.
p makefile ayrıştırma hakkında hata ayıklama bilgilerini yazdırın.
s Sonek dönüştürme kuralları hakkında hata ayıklama bilgilerini yazdırın.
t Hedef listesi bakımı hakkında hata ayıklama bilgilerini yazdırın.
V Zorla -V değişkenlerin ham değerlerini yazdırma seçeneği.
v Değişken ataması hakkında hata ayıklama bilgilerini yazdırın.
x Kabuk komutlarını şununla çalıştırın: -x böylece gerçek komutlar oldukları gibi yazdırılır
idam edildi.
-e Ortam değişkenlerinin makefiles içindeki makro atamalarını geçersiz kılacağını belirtin.
-f makefile
Varsayılan yerine okunacak bir makefile belirtin 'makefile'. Eğer makefile dır-dir '-'
standart giriş okunur. Birden çok makefile belirtilebilir ve
sipariş belirtildi.
-I rehber
Makefile ve dahil edilen makefile dosyalarının aranacağı bir dizin belirleyin. bu
system makefile dizini (veya dizinler için bkz. -m seçeneği) otomatik olarak
bu listenin bir parçası olarak dahil edilmiştir.
-i makefile'de kabuk komutlarının sıfırdan farklı çıkışını yoksay. Belirtmeye eşdeğer
'-' makefile içindeki her komut satırından önce.
-J özel
Bu seçenek değil kullanıcı tarafından belirtilmelidir.
Zaman j seçenek özyinelemeli bir derlemede kullanılıyorsa, bu seçenek bir make ile geçirilir.
çocuk, derlemedeki tüm yapım süreçlerinin işbirliği yapmasına izin vermek için yapar
sistemi aşırı yükleme.
-j maksimum iş sayısı
Maksimum iş sayısını belirtin b yapmak herhangi bir anda çalışan olabilir. bu
değer kaydedilir . YAP.İŞLER. olmadıkça uyumluluk modunu kapatır. B bayrak
ayrıca belirtilmiştir. Uyumluluk modu kapalıyken, bir a ile ilişkili tüm komutlar
hedef, geleneksel olanın aksine tek bir kabuk çağrısında yürütülür
satır başına kabuk çağırma. Bu, değişen geleneksel komut dosyalarını bozabilir
her komut çağrısındaki dizinler ve ardından yeni bir
çevre bir sonraki satırda. Bunun yerine komut dosyalarını düzeltmek daha verimlidir.
geriye dönük uyumluluğu açmak yerine.
-k Hatalarla karşılaşıldıktan sonra, ancak yalnızca hata yapan hedeflerde işlemeye devam edin.
yaratılışı hataya neden olan hedefe bağlı değildir.
-m rehber
sys.mk ve makefile dosyalarının aranacağı bir dizin belirtin.
⟨dosya⟩-tarzı içerme ifadesi. bu -m seçeneği oluşturmak için birden çok kez kullanılabilir.
arama yolu Bu yol, varsayılan sistem içerme yolunu geçersiz kılar:
/usr/share/mk. Ayrıca sistem içerme yolu aramaya eklenecektir.
için kullanılan yol"dosya"-style include deyimleri (bkz. -I seçenek).
içinde bir dosya veya dizin adı varsa -m argümanı (veya MAKESYSPATH ortamı
değişken) ".../" dizesiyle başlar ve ardından b yapmak belirtilen arayacaktır
bağımsız değişken dizesinin kalan kısmında adlandırılmış dosya veya dizin. Araştırma
Makefile'ın geçerli dizini ile başlar ve ardından yukarı doğru çalışır.
dosya sisteminin kökü. Arama başarılı olursa, ortaya çıkan dizin
içindeki ".../" belirtiminin yerini alır. -m argüman. Kullanılırsa, bu özellik
b yapmak özelleştirilmiş sys.mk dosyalarını mevcut kaynak ağacında kolayca aramak için (örn.
argüman olarak ".../mk/sys.mk" kullanarak).
-n Yürütülmüş olabilecek komutları görüntüleyin, ancak bunları gerçekten yürütmeyin
hedef .MAKE özel kaynağına bağlı değilse (aşağıya bakın).
-N Yürütülen komutları görüntüleyin, ancak gerçekte hiçbirini yürütmeyin.
onlardan; içine inmeden üst düzey makefile'lerde hata ayıklamak için kullanışlıdır.
alt dizinler.
-q Herhangi bir komut çalıştırmayın, ancak belirtilen hedefler güncelse 0'dan çıkın ve
1, aksi halde.
-r Sistem makefile'de belirtilen yerleşik kuralları kullanmayın.
-s Yürütülen komutları yankılamayın. ' belirtmekle eşdeğerdir@' önce
makefile içindeki her komut satırı.
-T izleme dosyası
ile kullanıldığında -j bayrak, bir izleme kaydı ekleyin izleme dosyası Başlanan her iş için
ve tamamlandı.
-t Makefile'de belirtildiği gibi bir hedefi yeniden oluşturmak yerine, oluşturun veya güncelleyin
güncel görünmesi için değişiklik zamanı.
-V değişken
Print b yapmakdeğeri hakkındaki fikri değişken, küresel bağlamda. inşa etme
herhangi bir hedef Bu seçeneğin birden çok örneği belirtilebilir; değişkenler
her boş veya tanımsız değişken için boş bir satır olacak şekilde satır başına bir tane yazdırılır. Eğer
değişken '$' içeriyorsa, değer yazdırmadan önce genişletilecektir.
-W Makefile ayrıştırma sırasında herhangi bir uyarıyı hata olarak kabul edin.
-w Giriş ve çıkış dizin mesajlarını, ön ve işlem sonrası yazdırın.
-X Komut satırında iletilen değişkenleri tek tek ortama aktarmayın.
Komut satırında iletilen değişkenler yine de komut satırı aracılığıyla dışa aktarılır. MAKEFLAGLAR
Çevre değişkeni. Bu seçenek, küçük bir limiti olan sistemlerde faydalı olabilir.
komut argümanlarının boyutu hakkında.
değişken=değer
Değişkenin değerini ayarla değişken için değer. Normalde, iletilen tüm değerler
komut satırı da ortamdaki alt markalara aktarılır. bu -X bayrak
bu davranışı devre dışı bırakır. Değişken atamaları, POSIX seçeneklerini takip etmelidir
uyumluluk ancak hiçbir sipariş uygulanmaz.
Bir makefile dosyasında yedi farklı satır türü vardır: dosya bağımlılığı özellikleri,
kabuk komutları, değişken atamaları, içerme ifadeleri, koşullu yönergeler, döngüler için,
ve yorumlar.
Genel olarak, satırlar bir satırdan diğerine ters eğik çizgi ile sonlandırılarak devam ettirilebilir.
('\'). Takip eden satırdaki son satırsonu karakteri ve ilk boşluk
tek bir alana sıkıştırılmıştır.
DOSYA BAĞIMLILIK TEKNİK ÖZELLİKLER
Bağımlılık çizgileri, bir veya daha fazla hedef, bir operatör ve sıfır veya daha fazla kaynaktan oluşur.
Bu, hedeflerin kaynaklara "bağlı olduğu" ve genellikle
onlardan yaratılmıştır. Hedef ve kaynak arasındaki kesin ilişki belirlenir
onları ayıran operatör tarafından. Üç operatör aşağıdaki gibidir:
: Bir hedef, değiştirme süresi herhangi bir hedefinkinden daha kısaysa, güncelliğini yitirmiş olarak kabul edilir.
kaynaklarından biridir. Bir hedef için kaynaklar, bu olduğunda bağımlılık satırları üzerinde birikir.
operatörü kullanılır. Hedef kaldırılırsa b yapmak kesintiye uğrar.
! Hedefler her zaman yeniden oluşturulur, ancak tüm kaynaklar incelenip yeniden
gerektiği gibi oluşturulur. Bir hedef için kaynaklar, bu olduğunda bağımlılık satırları üzerinde birikir.
operatörü kullanılır. Hedef kaldırılırsa b yapmak kesintiye uğrar.
:: Kaynak belirtilmezse, hedef her zaman yeniden oluşturulur. Aksi takdirde, bir hedef
kaynaklarından herhangi biri öncekinden daha yakın zamanda değiştirilmişse, güncelliğini yitirmiş sayılır.
hedef. Bir hedefin kaynakları, bu durumda bağımlılık çizgileri üzerinde birikmez.
operatörü kullanılır. Aşağıdaki durumlarda hedef kaldırılmayacak: b yapmak kesintiye uğrar.
Hedefler ve kaynaklar '?', '*', '[]' ve '{}' kabuk joker değerlerini içerebilir. bu
'?', '*' ve '[]' değerleri yalnızca hedefin son bileşeninin bir parçası olarak kullanılabilir veya
kaynak ve mevcut dosyaları tanımlamak için kullanılmalıdır. '{}' değerinin mutlaka olması gerekmez
Mevcut dosyaları tanımlamak için kullanılır. Genişletme, alfabetik olarak değil, dizin sırasındadır.
kabukta yapılır.
SHELL KOMUTLAR
Her hedef, normalde kullanılan bir veya daha fazla kabuk komutu satırıyla ilişkilendirilmiş olabilir.
hedefi oluşturmak için. Bu komut dosyasındaki satırların her biri , eğer mülteci statüleri sona erdirilmemişse Amerika'ya geldikten bir yıl sonra bir sekmeden önce gelir. (İçin
tarihsel sebepler, boşluklar kabul edilmez.) Hedefler birçok bağımlılıkta görünebilirken
satırlar istenirse, varsayılan olarak bu kurallardan yalnızca birini bir oluşturma komut dosyası izleyebilir.
Eğer '::' operatörü kullanılır, ancak tüm kurallar komut dosyalarını içerebilir ve komut dosyaları
bulunan sırayla yürütülür.
Satırın sonundan bir karakterle kaçmadıkça, her satır ayrı bir kabuk komutu olarak kabul edilir.
ters eğik çizgi ('\') bu durumda o satır ve sonraki birleştirilir. İlk karakterler ise
komutun herhangi bir kombinasyonu '@','+'veya'-', komut özel olarak ele alınır. A
'@' komutun yürütülmeden önce yankılanmamasına neden olur. A '+' komutu neden olur
yürütüldüğünde bile -n verilmiş. Bu, .MAKE special'in etkisine benzer.
kaynak, ancak efekt bir komut dosyasının tek bir satırıyla sınırlandırılabilir. A '-' içinde
uyumluluk modu, komut satırının sıfır olmayan herhangi bir çıkış durumunun yoksayılmasına neden olur.
Ne zaman b yapmak ile işler modunda çalıştırılır -j maksimum iş sayısı, hedef için tüm komut dosyası beslenir
kabuğun tek bir örneği. Uyumluluk (iş dışı) modunda, her komut bir
ayrı süreç. Komut herhangi bir kabuk meta karakteri içeriyorsa
('#=|^(){};&<>*?[]:$`\\n') kabuğa iletilecektir; aksi halde b yapmak deneyecek
doğrudan yürütme. Bir satır ' ile başlıyorsa-' ve kabuk ErrCtl'yi etkinleştirdi, ardından başarısız oldu
uyumluluk modunda olduğu gibi komut satırının değeri yoksayılır. Aksi halde '-' etkiler
tüm iş; komut dosyası, başarısız olan ilk komut satırında duracak, ancak hedef
başarısız sayılmaz.
Makefiles, kipi olacak şekilde yazılmalıdır. b yapmak operasyon onları değiştirmez
davranış. Örneğin, potansiyel olarak "cd" veya "chdir" kullanması gereken herhangi bir komut
sonraki komutlar için dizini değiştirmek, yürütülebilmesi için parantez içine alınmalıdır.
bir alt kabukta. Bir kabuğun kullanımını zorlamak için satır sonlarından kaçın, böylece
tüm komut dosyası bir komut. Örneğin:
kaçınma-chdir-yan etkiler:
@echo `pwd` içinde $@ Binası
@(cd ${.CURDIR} && ${MAKE} $@)
@echo "pwd"ye geri dön
modu ne olursa olsun-tek-kabuk-sağla:
@echo `pwd` içinde $@ Binası; \
(cd ${.CURDIR} && ${MAKE} $@); \
echo "pwd"ye geri dön
Dan beri b yapmak irade chdir(2)'ye.OBJDIR' herhangi bir hedefi yürütmeden önce, her alt süreç
mevcut çalışma dizini olarak bununla başlar.
DEĞİŞKEN ÖDEVLER
make içindeki değişkenler, kabuktaki değişkenlere çok benzer ve gelenek gereği, hepsinden oluşur.
büyük harfler.
Değişken atama düzenleyiciler
Değişkenlere değer atamak için kullanılabilecek beş operatör aşağıdaki gibidir:
= Değeri değişkene atayın. Önceki herhangi bir değer geçersiz kılınır.
+= Değeri, değişkenin geçerli değerine ekleyin.
?= Önceden tanımlanmamışsa, değeri değişkene atayın.
:= Genişletme ile atayın, yani değeri değişkene atamadan önce genişletin.
Normal olarak, değişken referans verilene kadar genişletme yapılmaz. NOT: Referanslar
tanımsız değişkenlere değil genişletilmiş. Bu, değişken olduğunda sorunlara neden olabilir
değiştiriciler kullanılır.
!= Değeri genişletin ve yürütme için kabuğa iletin ve sonucu
değişken. Sonuçtaki tüm yeni satırlar boşluklarla değiştirilir.
Atanan önceki herhangi bir boşluk değer kaldırıldı; değer ekleniyorsa, bir
değişkenin önceki içeriği ile eklenen içerik arasına tek boşluk eklenir
değeri.
Değişkenler, değişken adı kaşlı ayraçlar ('{}') veya
parantezler ('()') ve önünde dolar işareti ('$') bulunur. Değişken adı şunları içeriyorsa
sadece tek bir harf, çevreleyen parantezler veya parantezler gerekli değildir. Bu daha kısa
formu tavsiye edilmez.
Değişken adı bir dolar içeriyorsa, önce adın kendisi genişletilir. Bu izin verir
neredeyse rastgele değişken adları, ancak dolar, parantez, parantez veya
boşluklar gerçekten en iyi şekilde önlenir!
Bir değişkeni genişletmenin sonucu bir dolar işareti ('$') içeriyorsa, dize genişletilir
tekrar.
Değişken ikamesi, değişkenin nerede olduğuna bağlı olarak üç farklı zamanda gerçekleşir.
Kullanılan.
1. Bağımlılık satırlarındaki değişkenler, satır okundukça genişletilir.
2. Kabuk komutlarındaki değişkenler, kabuk komutu yürütüldüğünde genişletilir.
3. “.for” döngü indeks değişkenleri, her döngü yinelemesinde genişletilir. Diğer
değişkenler döngüler içinde genişletilmez, bu nedenle aşağıdaki örnek kod:
.ben için 1 2 3
a+= ${i}
j= ${i}
b+= ${j}
.endfor
Tüm:
@echo ${a}
@echo ${b}
yazdıracak:
+1 2 3
+3 3 3
${a} döngü yürütüldükten sonra “1 2 3” içerirken, ${b} “${j} içerir
${j} ${j}”, döngü tamamlandıktan sonra ${j} “3” içerdiğinden “3 3 3”e genişler.
Değişken sınıflar
Dört farklı değişken sınıfı (artan öncelik sırasına göre):
Ortam Değişkenleri
Bir parçası olarak tanımlanan değişkenler b yapmak' çevresi.
Global değişkenler
Makefile'de veya dahil edilen makefile'lerde tanımlanan değişkenler.
Komut satırı değişkenleri
Komut satırının bir parçası olarak tanımlanan değişkenler.
Yerel değişkenler
Belirli bir hedefe özel olarak tanımlanan değişkenler.
Yerel değişkenlerin tümü yerleşiktir ve değerleri hedeften hedefe sihirli bir şekilde değişir. o
şu anda yeni yerel değişkenler tanımlamak mümkün değil. Yedi yerel değişken şu şekildedir:
aşağıdaki gibidir:
.ALLSRC Bu hedef için tüm kaynakların listesi; Ayrıca şöyle bilinir '>'.
.ARŞİV Arşiv dosyasının adı; Ayrıca şöyle bilinir '!'.
.IMPSRC Sonek dönüştürme kurallarında, kaynağın adı/yolu
hedef dönüştürülecektir (“zımni” kaynak); Ayrıca şöyle bilinir '<'. o
açık kurallarda tanımlanmamıştır.
.ÜYE Arşiv üyesinin adı; Ayrıca şöyle bilinir '%'.
.OODATE Bu hedef için güncel olmadığı düşünülen kaynakların listesi; de bilinmektedir
gibi '?'.
.ÖNEK Yalnızca dosya bölümünü içeren, son ek içermeyen hedefin dosya öneki
veya önceki dizin bileşenleri; Ayrıca şöyle bilinir '*'. Sonek olmalıdır
ile bildirilen bilinen soneklerden biri .SONEKLER yoksa olmayacak
tanıdı.
.HEDEF Hedefin adı; Ayrıca şöyle bilinir '@'.
Daha kısa formlar ('>','!','<','%','?','*', ve '@') geriye doğru izin verilir
geçmiş makefiles ve eski POSIX make ile uyumluluk ve önerilmez.
Bu değişkenlerin noktalama işaretli varyantları, hemen ardından 'D' veya 'F' gelir, örn.
'$(@D)', ':H' ve ':T' değiştiricilerini kullanmaya eşdeğer eski formlardır. Bu formlar
AT&T System V UNIX makefiles ve POSIX ile uyumluluk için kabul edildi, ancak
önerilir.
Yerel değişkenlerin dördü, genişledikleri için bağımlılık satırlarındaki kaynaklarda kullanılabilir.
hattaki her hedef için uygun değere. Bu değişkenler '.HEDEF','.ÖNEK'
'.ARŞİV', ve '.ÜYE'.
Ek yerleşik değişkenler
Ek olarak, b yapmak aşağıdaki değişkenleri ayarlar veya bilir:
$ Tek bir dolar işareti '$', yani '$$' tek bir dolar işaretine genişler.
.ALLHEDEFLER Makefile'de karşılaşılan tüm hedeflerin listesi. sırasında değerlendirilirse
Makefile ayrıştırma, yalnızca şu ana kadar karşılaşılan hedefleri listeler.
.CURDIR bulunduğu dizine giden yol b yapmak idam edildi. Açıklamaya bakın
Daha fazla ayrıntı için 'PWD'.
.INCLUDEDFROMDIR
Bu Makefile dosyasının dahil olduğu dosyanın dizini.
.DAHİL DOSYADAN
Bu Makefile dosyasının dahil edildiği dosyanın dosya adı.
YAPIN Adını b yapmak ile idam edildi (argüman[0]). Uyumluluk için b yapmak
ayrıca ayarlar .YAPMAK aynı değerle. Kullanmak için tercih edilen değişken,
ortam değişkeni MAKE, çünkü diğer sürümlerle daha uyumlu
of b yapmak ve aynı isimli özel hedefle karıştırılamaz.
.MAKE.BAĞIMLI DOSYASI
makefile'ı adlandırır (varsayılan '.bağlı olmak') oluşturulan bağımlılıkların olduğu
okuyun.
.MAKE.EXPAND_VARIABLES
varsayılan davranışını kontrol eden bir boole -V seçeneği.
. YAP. İHRACAT Tarafından dışa aktarılan değişkenlerin listesi b yapmak.
. YAP.İŞLER Argüman -j seçeneği.
.İŞ YAP.ÖNEK
If b yapmak ile çalıştırılır j daha sonra her hedef için çıktının önüne bir jeton eklenir
'--- hedef ---' ile kontrol edilebilen ilk kısmı
.İŞ YAP.ÖNEK. Eğer .İŞ YAP.ÖNEK boş, jeton yazdırılmaz.
Örneğin: .MAKE.JOB.PREFIX=${.newline}---${.MAKE:T}[${.MAKE.PID}]
'---make[1234] target ---' gibi belirteçler üreterek izlemeyi kolaylaştırır
paralellik derecesi elde edilir.
MAKEFLAGS 'MAKEFLAGS' ortam değişkeni, olabilecek herhangi bir şeyi içerebilir.
üzerinde belirtilen b yapmak' komut satırı. üzerinde belirtilen herhangi bir şey b yapmak'ın komutu
satırı, daha sonra girilen 'MAKEFLAGS' değişkenine eklenir.
tüm programlar için ortam b yapmak yürütür.
.MAK.SEVİYE özyineleme derinliği b yapmak. ilk örneği b yapmak 0 olacak ve
bir sonraki tarafından görülebilmesi için ortama artan bir değer konur.
nesil. Bu, aşağıdaki gibi testlere izin verir: korumak için .if ${.MAKE.LEVEL} == 0
sadece ilk durumda değerlendirilmesi gereken şeyler b yapmak.
.MAKE.MAKEFILE_PREFERENCE
Makefile adlarının sıralı listesi (varsayılan 'makefile','Makefile') o
b yapmak Aradıracağım
.MAKE.MAKEDOSYALARI
Tarafından okunan makefile listesi b yapmak, izleme için yararlı olan
bağımlılıklar. Her makefile, numaradan bağımsız olarak yalnızca bir kez kaydedilir.
kez okundu.
.MAK.MOD Tüm makefile'leri okuduktan sonra işlendi. modunu etkileyebilir b yapmak ishal
içinde. Birkaç anahtar kelime içerebilir:
compat Facebok sayfasını beğenin : -B, koyar b yapmak "uyum" moduna geçin.
meta koyar b yapmak için meta dosyaların oluşturulduğu "meta" moduna
komut çalıştırmayı yakalamak için her hedef, üretilen çıktı ve
if filimon(4) mevcutsa, sistem çağrıları
ilgi b yapmak. Yakalanan çıktı şu durumlarda çok faydalı olabilir:
hataları teşhis etmek.
curdirOk= bf Normalde b yapmak ' içinde .meta dosyaları oluşturmayacak.CURDIR'. Bu
ayarlanarak geçersiz kılınabilir bf temsil eden bir değere
Doğru.
env Hata ayıklama için, ortamı dahil etmek faydalı olabilir.
.meta dosyası.
gereksiz sözlerle dolu "Meta" modundaysa, oluşturulmakta olan hedef hakkında bir ipucu yazdırın.
Bu, yapı başka türlü sessizce çalışıyorsa kullanışlıdır. bu
mesaj değerini yazdırdı: .MAKE.META.ÖNEK.
yoksay-cmd Bazı makefile dosyaları, kararlı olmayan komutlara sahiptir. Bu
anahtar kelime, bir anahtar kelime olup olmadığını belirlemek için göz ardı edilmelerine neden olur.
"meta" modunda hedef güncel değil. Ayrıca bakınız .NOMETA_CMP.
sessiz= bf If bf is True, bir .meta dosyası oluşturulduğunda hedefi işaretleyin
.SESSİZ.
.MAKE.META.BAILIWICK
"Meta" modunda, dizinlerle eşleşen öneklerin bir listesini sağlar
tarafından kontrol b yapmak. dışında oluşturulmuş bir dosya ise .OBJDIR fakat
söz konusu bailiwick eksikse, mevcut hedefin dışında kabul edilir.
tarih.
.MAKE.META.OLUŞTURULDU
"Meta" modunda, bu değişken güncellenen tüm meta dosyalarının bir listesini içerir.
Boş değilse, işlenmesini tetiklemek için kullanılabilir. .META.DOSYALARINI YAPIN.
.META.DOSYALARINI YAPIN
"Meta" modunda, bu değişken kullanılan tüm meta dosyalarının bir listesini içerir.
(güncellendi veya güncellenmedi). Bu liste, meta dosyaları işlemek için kullanılabilir.
bağımlılık bilgilerini ayıklayın.
.MAKE.META.IGNORE_PATHS
Yok sayılması gereken yol öneklerinin bir listesini sağlar; Çünkü
İçeriğin zamanla değişmesi bekleniyor. Varsayılan liste şunları içerir: '/ dev
/ Etc / proc / Tmp / var / run / Var / tmp'
.MAKE.META.ÖNEK
"Meta ayrıntılı" olarak güncellenen her meta dosya için yazdırılan mesajı tanımlar
modu. Varsayılan değer:
${.TARGET:H:tA}/${.TARGET:T} Oluşturma
.MAKEOVERRIDE'LAR Bu değişken, üzerinde atanan değişkenlerin adlarını kaydetmek için kullanılır.
komut satırı, böylece 'MAKEFLAGS'ın bir parçası olarak dışa aktarılabilirler. Bu
davranış, ' öğesine boş bir değer atanarak devre dışı bırakılabilir..MAKEOVERRIDE'LAR'
bir makefile içinde. Ekstra değişkenler, bir makefile dosyasından şu şekilde dışa aktarılabilir:
adlarını ekleyerek'.MAKEOVERRIDE'LAR'. 'MAKEFLAGS' yeniden ihraç edildi
ne zaman olursa '.MAKEOVERRIDE'LAR' değiştirilmiştir.
.MAKE.PATH_FILEMON
If b yapmak ile inşa edildi filimon(4) destek, bu,
aygıt düğümü. Bu, makefile dosyalarının bu desteği test etmesine izin verir.
.MAKE.PID süreç kimliği b yapmak.
.PPID YAPIMI ana işlem kimliği b yapmak.
.MAKE.SAVE_DOLLARS
değer, yapılırken '$$' korunup korunmadığını kontrol eden bir bool olmalıdır
':=' atamaları. Geriye dönük uyumluluk için varsayılan değer false şeklindedir. Ayarlamak
diğer markalarla uyumluluk için true . false olarak ayarlanırsa, '$$' olur
Normal değerlendirme kurallarına göre '$'.
MAKE_PRINT_VAR_ON_ERROR YAPIN
Ne zaman b yapmak bir hata nedeniyle durur, adını ve değerini yazdırır.
'.CURDIR' ile adlandırılmış herhangi bir değişkenin değeri
'MAKE_PRINT_VAR_ON_ERROR YAPIN'.
.Yeni hat Bu değişkene değeri olarak basitçe yeni bir satır karakteri atanır. Bu
kullanarak genişletmelere izin verir. :@ yinelemeler arasına yeni bir satır koymak için değiştirici
boşluktan ziyade döngünün Örneğin, baskı
'MAKE_PRINT_VAR_ON_ERROR YAPIN' şeklinde yapılabilir
${MAKE_PRINT_VAR_ON_ERROR:@v@$v='${$v}'${.newline}@}.
.OBJDIR Hedeflerin oluşturulduğu dizine giden yol. onun değeri
denenerek belirlenir chdir(2) sırasıyla aşağıdaki dizinlere ve
ilk eşleşmeyi kullanarak:
1. ${MAKEOBJDIRPREFIX}${.CURDIR}
(Yalnızca ortamda veya komutta 'MAKEOBJDIRPREFIX' ayarlanmışsa
astar.)
2. ${MAKEOBJDIR}
(Yalnızca ortamda veya komutta 'MAKEOBJDIR' ayarlanmışsa
astar.)
3. ${.CURDIR}/nesne${MAKİNE}
4. ${.CURDIR}/obj
5. /usr/nesne/${.CURDIR}
6. ${.CURDIR}
Değişken genişletme, kullanılmadan önce değer üzerinde gerçekleştirilir, bu nedenle
gibi ifadeler
${.CURDIR:S,^/ usr / src,/var/nesne,}
Kullanılabilir. Bu özellikle 'MAKEOBJDIR' ile kullanışlıdır.
'.OBJDIR' makefile'de özel hedef aracılığıyla değiştirilebilir '.OBJDIR'.
Her durumda, b yapmak irade chdir(2) varsa belirtilen dizine,
ve ayarla'.OBJDIR' ve 'PWD' herhangi bir hedefi yürütmeden önce bu dizine.
.PARSEDIR Geçerli dizinin dizinine giden yol 'Makefile' ayrıştırılıyor.
.PARSEDOSYA Mevcut ' taban adıMakefile' ayrıştırılıyor. Bu değişken ve
'.PARSEDIR' her ikisi de yalnızca 'Makefile'lar' ayrıştırılıyor. Eğer
mevcut değerlerini korumak istiyorsanız, bunları kullanarak bir değişkene atayın.
genişlemeli atama: (':=').
.YOL Dizinlerin listesini temsil eden bir değişken b yapmak arayacak
dosyalar için. Arama listesi hedef kullanılarak güncellenmelidir '.YOL'
değişkenden ziyade.
PWD Geçerli dizine giden alternatif yol. b yapmak normalde ayarlar '.CURDIR' ile
tarafından verilen kanonik yol getcwd(3). Ancak, eğer ortam değişkeni
'PWD' ayarlanır ve geçerli dizine bir yol verir, ardından b yapmak setleri
'.CURDIR' yerine 'PWD' değerine. Bu davranış şu durumlarda devre dışı bırakılır:
'MAKEOBJDIRPREFIX' ayarlandı veya 'MAKEOBJDIR' bir değişken dönüşümü içeriyor.
'PWD', ' değerine ayarlandı.OBJDIR' tüm programlar için b yapmak
yürütür.
.HEDEFLER Varsa, komut satırında açıkça belirtilen hedeflerin listesi.
VPATH İki nokta üst üste ayrılmış (“:”) dizin listeleri b yapmak dosyaları arayacaktır.
Değişken, yalnızca eski marka programlarıyla uyumluluk için desteklenir,
'.YOL' Bunun yerine.
Değişken düzenleyiciler
Değişken genişletme, değişkenin her bir kelimesini seçmek veya değiştirmek için değiştirilebilir (burada bir
"kelime" boşlukla ayrılmış karakter dizisidir). Bir değişkenin genel biçimi
genişleme aşağıdaki gibidir:
${değişken[:değiştirici[:...]]}
Her değiştirici, bir ters eğik çizgi ('\') ile kaçabilen iki nokta üst üste ile başlar.
Bir dizi değiştirici, bir değişken aracılığıyla aşağıdaki gibi belirtilebilir:
değiştirici_değişken=değiştirici[:...]
${değişken:${modifier_variable}[:...]}
Bu durumda, değiştirici_değişkendeki ilk değiştirici iki nokta üst üste ile başlamaz, çünkü
bu, referans değişkeninde görünmelidir. içindeki değiştiricilerden herhangi biri varsa
değiştirici_değişken bir dolar işareti ('$') içerir, erkenden kaçınmak için bunlar iki katına çıkarılmalıdır.
genişleme.
Desteklenen değiştiriciler şunlardır:
:E Değişkendeki her kelimeyi son ekiyle değiştirir.
:H Değişkendeki her kelimeyi son bileşen dışındaki her şeyle değiştirir.
:Mmodel
Yalnızca eşleşen kelimeleri seçin model. Standart kabuk joker karakterleri
('*', '?' ve '[]') kullanılabilir. Joker karakterlerden bir ile kaçılabilir
ters eğik çizgi ('\'). Değerlerin kelimelere ayrılma, eşleşme ve
sonra katıldı, gibi bir yapı
${VAR:M*}
tüm baştaki ve sondaki boşlukları kaldırarak sözcükler arası boşluğu normalleştirir ve
çoklu ardışık boşlukları tek boşluklara dönüştürmek.
:Nmodel
Bu aynı ':M', ancak eşleşmeyen tüm kelimeleri seçer model.
:O Değişkendeki her kelimeyi alfabetik olarak sıralayın. Kelimeleri ters sırada sıralamak için
':O:[-1..1]' değiştiricilerin kombinasyonu.
:Öküz Değişkendeki kelimeleri rastgele hale getirin. Her atıfta bulunduğunuzda sonuçlar farklı olacaktır
değiştirilmiş değişkene; atamayı genişletme ile kullan (':=') böyle önlemek için
davranış. Örneğin,
LIST= uno nedeniyle tre quattro
RANDOM_LIST= ${LIST:Öküz}
STATIC_RANDOM_LIST:= ${LIST:Öküz}
Tüm:
@echo "${RANDOM_LIST}"
@echo "${RANDOM_LIST}"
@echo "${STATIC_RANDOM_LIST}"
@echo "${STATIC_RANDOM_LIST}"
şuna benzer çıktılar üretebilir:
quattro nedeniyle tre uno
tre nedeniyle quattro uno
nedeniyle uno quattro tre
nedeniyle uno quattro tre
:Q Güvenli bir şekilde geçirilebilmesi için değişkendeki her kabuk meta karakterini alıntılar
özyinelemeli çağrılar yoluyla b yapmak.
:R Değişkendeki her kelimeyi soneki dışında her şeyle değiştirir.
:gmtime
değer için bir biçim dizesidir strftime(3), akımı kullanarak gm zamanı(3).
:doğramak
Değerin 32 bitlik bir karmasını hesaplayın ve bunu onaltılık basamaklar olarak kodlayın.
:Yerel zaman
değer için bir biçim dizesidir strftime(3), akımı kullanarak Yerel zaman(3).
:tA Değişkeni kullanarak mutlak bir yola dönüştürmeyi deneyin gerçek yol(3), bu başarısız olursa,
değer değişmez.
:tl Değişkeni küçük harfe dönüştürür.
:tsc
Değişkendeki kelimeler normalde genişlemede bir boşlukla ayrılır. Bu değiştirici
ayırıcıyı karaktere ayarlar c. Eğer c atlanırsa, ayırıcı kullanılmaz.
Genel kaçışlar (sekizli sayısal kodlar dahil), beklendiği gibi çalışır.
:tu Değişkeni büyük harfe dönüştürür.
:tW Değerin tek bir sözcük olarak ele alınmasına neden olur (muhtemelen gömülü beyaz
uzay). Ayrıca bakınız ':[*]'.
:tw Değerin, boşlukla ayrılmış bir sözcük dizisi olarak ele alınmasına neden olur. Görmek
Ayrıca ':[@]'.
:S/eski_string/yeni_string/[1gW]
İlk oluşumunu değiştir eski_string değişkenin değerinde, yerine
yeni_string. Desenin son bölü çizgisine bir 'g' eklenirse, içindeki tüm oluşumlar
her kelime değiştirilir. Desenin son bölü çizgisine bir '1' eklenirse, yalnızca
ilk kelime etkilenir. Desenin son eğik çizgisine bir 'W' eklenirse,
daha sonra değer tek bir sözcük olarak ele alınır (muhtemelen gömülü beyaz boşluk içerir).
If eski_string bir şapka ('^') ile başlar, eski_string başında demirlenir
her kelime. Eğer eski_string dolar işaretiyle ('$') biter, sonuna sabitlenir
her kelime. İçeri yeni_string, ve işareti ('&') ile değiştirilir eski_string (olmadan
herhangi bir '^' veya '$'). Parçalar için sınırlayıcı olarak herhangi bir karakter kullanılabilir.
değiştirici dize. Sabitleme, ve işareti ve sınırlayıcı karakterlerden kaçma işlemi yapılabilir.
ters eğik çizgi ('\').
Değişken genişleme, her ikisinde de normal şekilde gerçekleşir. eski_string ve yeni_string
bir doların genişlemesini önlemek için bir ters eğik çizgi kullanılması tek istisna dışında
işareti ('$'), her zamanki gibi bir önceki dolar işareti değil.
:C/model/değiştirme/[1gW]
The :C değiştirici tıpkı :S eski ve yeni dizeler dışında değiştirici,
basit dizeler olmak yerine, genişletilmiş bir düzenli ifadedir (bkz. regex(3))
dizi model ve bir ed(1) tarzı dize değiştirme. Normalde ilk olay
desenin model değerin her bir kelimesinde ile değiştirilir değiştirme.
'1' değiştiricisi, ikamenin en fazla bir kelimeye uygulanmasına neden olur; 'g' değiştiricisi
ikamenin arama modelinin birçok örneğine uygulanmasına neden olur model as
bulunduğu kelime veya kelimelerde meydana gelir; 'W' değiştiricisi, değerin
tek bir kelime olarak ele alınır (muhtemelen gömülü beyaz boşluk içerir). '1' ve
'g' ortogonaldir; ilki, birden çok kelimenin potansiyel olarak olup olmadığını belirtir.
etkilenen, ikincisi birden fazla ikamenin potansiyel olarak her birinde meydana gelip gelemeyeceği
etkilenen kelime
Gelince :S değiştirici, model ve değiştirme değişken genişlemeye tabi tutulur
normal ifadeler olarak ayrıştırılmadan önce.
:T Değişkendeki her kelimeyi son bileşeniyle değiştirir.
:u Bitişik yinelenen kelimeleri kaldırın (gibi tek(1)).
:?gerçek_dize:yanlış_dize
Değişken adı (değeri değil), .if koşullu bir ifade olarak ayrıştırıldığında,
true olarak değerlendirir, değeri olarak döndürür gerçek_dize, aksi takdirde iade edin
yanlış_dize. Değişken adı ifade olarak kullanıldığından, :? ilk olmalı
değişken adından sonra değiştirici - elbette genellikle şunları içerecektir:
değişken açılımlar Yaygın bir hata, aşağıdaki gibi ifadeleri kullanmaya çalışmaktır:
${NUMBERS:M42:?eşleşme:hayır}
gerçekte tanımlanmış (SAYILAR) testleri, "42" ile eşleşen herhangi bir kelime olup olmadığını belirlemek için yapmanız gereken
şöyle bir şey kullanın:
${"${NUMBERS:M42}" != "":?match:no}.
:old_string=yeni_string
Bu, AT&T System V UNIX stili değişken ikamesidir. bu son olmalı
değiştirici belirtildi. Eğer eski_string or yeni_string desen eşleşmesini içermez
karakter % o zaman her kelimenin sonuna sabitlendiği varsayılır, bu yüzden sadece
son ekler veya tüm kelimeler değiştirilebilir. Aksi halde % alt dizesidir eski_string
değiştirilecek yeni_string.
Değişken genişleme, her ikisinde de normal şekilde gerçekleşir. eski_string ve yeni_string
bir doların genişlemesini önlemek için bir ters eğik çizgi kullanılması tek istisna dışında
işareti ('$'), her zamanki gibi bir önceki dolar işareti değil.
:@temp@dizi@
Bu, OSF Geliştirme Ortamı (ODE) yapımının döngü genişletme mekanizmasıdır.
aksine .için döngü genişletmesi, başvuru anında gerçekleşir. Atamak temp her kelimeye
değişkende ve değerlendir dizi. ODE konvansiyonu, temp başlamalı ve
bir süre ile sona erer. Örneğin.
${LINKS:@.LINK.@${LN} ${HEDEF} ${.LINK.}@}
Ancak tek bir karakter değişkeni genellikle daha okunabilirdir:
${MAKE_PRINT_VAR_ON_ERROR:@v@$v='${$v}'${.newline}@}
:Uyeni yıl
Değişken tanımsız ise yeni yıl değerdir. Değişken tanımlanırsa,
mevcut değer döndürülür. Bu da başka bir ODE yapma özelliğidir. Ayar için kullanışlıdır
örneğin hedef başına CFLAGS:
${_${.TARGET:T_CFLAGS:U${DEF_CFLAGS}}
Bir değer yalnızca değişken tanımsızsa gerekliyse, şunu kullanın:
${VAR:D:Unewval}
:Dyeni yıl
Değişken tanımlı ise yeni yıl değerdir.
:L Değişkenin adı değerdir.
:P Değişkenle aynı adı taşıyan düğümün yolu değerdir. eğer böyle değilse
düğüm var veya yolu boş ise, değişkenin adı kullanılır. için
Bu değiştiricinin çalışması için, adın (düğüm) en azından bir
bağımlılık.
:!cmd!
Çalıştırma çıktısı cmd değerdir.
:NS Değişken boş değilse komut olarak çalıştırılır ve çıktı yeni olur.
değeri.
:: =str
Değişkene değer atanır str ikameden sonra. Bu değiştirici ve onun
varyasyonlar, gerektiğinde bir değişken ayarlamak istemek gibi belirsiz durumlarda yararlıdır.
kabuk komutları ayrıştırılıyor. Bu atama değiştiricileri her zaman hiçbir şeye genişler,
bu nedenle, bir kural satırında kendi başlarına görünüyorlarsa, tutulacak bir şeyden önce gelmelidir.
b yapmak mutlu.
'::' AT&T System V UNIX stiliyle yanlış eşleşmelerin önlenmesine yardımcı olur := değiştirici ve
ikame her zaman gerçekleştiğinden :: = formu belli belirsiz uygundur.
::?=str
Gelince :: = ancak yalnızca değişkenin zaten bir değeri yoksa.
::+=str
eklemek str değişkene.
::!=cmd
çıktısını atayın cmd değişkene.
:[menzil]
Değerden bir veya daha fazla kelime seçer veya ilgili diğer işlemleri gerçekleştirir.
değerin kelimelere ayrılma şekli.
Normalde, bir değer, beyaz boşlukla sınırlandırılmış bir sözcük dizisi olarak ele alınır. Bazı
değiştiriciler bu davranışı bastırarak bir değerin tek bir kelime olarak ele alınmasına neden olur.
(muhtemelen gömülü beyaz boşluk içerir). Boş bir değer veya aşağıdakilerden oluşan bir değer
tamamen boşluklu, tek bir kelime olarak kabul edilir. ' amaçları için:[]'
değiştirici, kelimeler pozitif tamsayılar kullanılarak her iki ileriye doğru indekslenir (burada indeks 1
ilk kelimeyi temsil eder) ve negatif tam sayıları kullanarak geriye doğru (burada indeks -1
son sözü temsil eder).
The menzil değişken genişlemeye tabi tutulur ve genişletilmiş sonuç daha sonra
şu şekilde yorumlanır:
indeks Değerden tek bir kelime seçer.
başlama..son
tüm kelimeleri seçer başlama için son, dahil. Örneğin, ':[2..-1]' seçer
ikinci kelimeden son kelimeye kadar tüm kelimeler. Eğer başlama daha büyüktür son,
daha sonra kelimeler ters sırada çıkar. Örneğin, ':[-1..1]' hepsini seçer
sondan başa sözler.
* Sonraki değiştiricilerin değeri tek bir kelime olarak ele almasına neden olur (muhtemelen
gömülü beyaz boşluk içeren). Bourne'daki "$*" etkisine benzer
kabuk.
0 ' ile aynı anlama gelir:[*]'.
@ Sonraki değiştiricilerin, değeri sınırlandırılmış bir sözcük dizisi olarak ele almasına neden olur
beyaz boşluk tarafından. Bourne kabuğundaki "$@" etkisine benzer.
# Değerdeki sözcük sayısını döndürür.
DAHİL İFADELER, ŞARTLILAR VE İÇİN DÖNGÜLER
Makefile içerme, koşullu yapılar ve C programlamasını andıran for döngüleri
dil sağlanır b yapmak. Tüm bu yapılar ile başlayan bir çizgi ile tanımlanır
tek nokta ('.') karakteri. Dosyalar her ikisine de dahildir .Dahil etmek ⟨dosya⟩ veya .Dahil etmek
"dosya". Köşeli parantez veya çift tırnak arasındaki değişkenler dosyayı oluşturacak şekilde genişletilir
isim. Köşeli parantez kullanılırsa, dahil edilen makefile'nin sistemde olması beklenir.
makefile dizini. Çift tırnak kullanılırsa, dahil edilen makefile dizini ve herhangi bir
kullanılarak belirtilen dizinler -I seçenek sistem makefile dizininden önce aranır.
Diğer sürümleriyle uyumluluk için b yapmak 'include file ...' da kabul edilir.
include ifadesi şu şekilde yazılırsa .-Dahil etmek ya da .içermek sonra bulma hataları ve/veya
açma dahil dosyaları yoksayılır.
include ifadesi şu şekilde yazılırsa .içermek sadece yer bulma ve/veya açma hataları değil
dahil edilen dosyalar yoksayılır, ancak dahil edilen dosyadaki eski bağımlılıklar yalnızca yok sayılır
sevmek .MAKE.BAĞIMLI DOSYASI.
Koşullu ifadeler ayrıca satırın ilk karakteri olarak tek bir noktadan önce gelir.
Olası koşullar aşağıdaki gibidir:
.hata mesaj
Mesaj, makefile adı ve satır numarası ile birlikte yazdırılır, ardından
b yapmak çıkacak
.ihracat değişken Kendi ID’n ile mağazalarını oluştur
Belirtilen genel değişkeni dışa aktarın. Değişken listesi sağlanmazsa, tüm globaller
dahili değişkenler ('.' ile başlayanlar) dışında dışa aktarılır. Bu değil
tarafından etkilenen -X bayrak, bu yüzden dikkatli kullanılmalıdır. ile uyumluluk için
Diğer b yapmak 'export değişken=değer' programları da kabul edilir.
Bir değişken adı ekleme . YAP. İHRACAT bir değişkeni dışa aktarmakla eşdeğerdir.
.export-env değişken Kendi ID’n ile mağazalarını oluştur
'.export' ile aynı, ancak değişkenin eklenmemesi . YAP. İHRACAT.
Bu, kullanılandan farklı bir değerin çevreye aktarılmasına izin verir.
by b yapmak içten.
.export değişmezi değişken Kendi ID’n ile mağazalarını oluştur
Değerdeki değişkenlerin genişletilmemesi dışında '.export-env' ile aynıdır.
. Bilgiler mesaj
Mesaj, makefile adı ve satır numarası ile birlikte yazdırılır.
.undef değişken
Belirtilen global değişkenin tanımını kaldırın. Yalnızca global değişkenler tanımsız olabilir.
.dışa aktarma değişken Kendi ID’n ile mağazalarını oluştur
'.export'un tersi. Belirtilen küresel değişken şuradan kaldırılacak
. YAP. İHRACAT. Değişken listesi sağlanmazsa, tüm globaller dışa aktarılmaz ve
. YAP. İHRACAT silindi.
.unexport-env
Daha önce dışa aktarılan tüm küreselleri dışa aktarın ve devralınan ortamı temizleyin
ebeveyn. Bu işlem, orijinal ortamın bellek sızıntısına neden olur, bu nedenle
seyrek kullanılmalıdır. için test .MAK.SEVİYE 0 olması mantıklı. Ayrıca
ana ortamdan kaynaklanan herhangi bir değişkenin olması gerektiğini unutmayın.
istenirse açıkça korunur. Örneğin:
.if ${.MAKE.LEVEL} == 0
YOL := ${YOL}
.unexport-env
.export YOL
.endif
Yalnızca 'PATH' içeren bir ortamla sonuçlanır, bu da minimum yararlı
Çevre. Aslında '.MAKE.LEVEL' de yeni ortama itilecek.
.uyarı mesaj
İleti ön eki 'uyarı:' makefile adı ile birlikte yazdırılır
ve satır numarası.
.Eğer [!]ifade [Şebeke ifade Kendi ID’n ile mağazalarını oluştur]
Bir ifadenin değerini test edin.
.ifdef [!]değişken [Şebeke değişken Kendi ID’n ile mağazalarını oluştur]
Bir değişkenin değerini test edin.
.ifndef [!]değişken [Şebeke değişken Kendi ID’n ile mağazalarını oluştur]
Bir değişkenin değerini test edin.
.ifmake [!]hedef [Şebeke hedef Kendi ID’n ile mağazalarını oluştur]
Oluşturulan hedefi test edin.
.ifnmake [!] hedef [Şebeke hedef Kendi ID’n ile mağazalarını oluştur]
Oluşturulan hedefi test edin.
.Başka Son koşullu anlamı tersine çevirin.
.elif [!] ifade [Şebeke ifade Kendi ID’n ile mağazalarını oluştur]
Kombinasyonu '.Başka' bunu takiben '.Eğer'.
.elifdef [!]değişken [Şebeke değişken Kendi ID’n ile mağazalarını oluştur]
Kombinasyonu '.Başka' bunu takiben '.ifdef'.
.elifndef [!]değişken [Şebeke değişken Kendi ID’n ile mağazalarını oluştur]
Kombinasyonu '.Başka' bunu takiben '.ifndef'.
.elifmake [!]hedef [Şebeke hedef Kendi ID’n ile mağazalarını oluştur]
Kombinasyonu '.Başka' bunu takiben '.ifmake'.
.elifnmake [!]hedef [Şebeke hedef Kendi ID’n ile mağazalarını oluştur]
Kombinasyonu '.Başka' bunu takiben '.ifnmake'.
.endif Koşulun gövdesini sonlandırın.
The Şebeke aşağıdakilerden herhangi biri olabilir:
|| Mantıksal VEYA.
&& Mantıksal VE; “||” den daha yüksek önceliğe sahiptir.
C'de olduğu gibi, b yapmak sadece koşullu bir koşulu, onun belirlemek için gerekli olduğu ölçüde değerlendirecektir.
değer. Değerlendirme sırasını değiştirmek için parantezler kullanılabilir. Boole operatörü '!'
bir koşulun tamamını mantıksal olarak reddetmek için kullanılabilir. Şundan daha yüksek önceliğe sahiptir:
'&&'.
Değeri ifade aşağıdakilerden herhangi biri olabilir:
tanımlı Argüman olarak bir değişken adı alır ve değişken kullanılmışsa true olarak değerlendirilir.
tanımladı.
yapmak Argüman olarak bir hedef adı alır ve hedefin doğru olup olmadığını değerlendirir.
parçası olarak belirtilen b yapmak'nin komut satırı veya varsayılan hedef olarak ilan edildi
(örtülü veya açık olarak, bkz. .ANA) içeren satırdan önce
koşullu.
boş Olası değiştiricilerle bir değişken alır ve genişletmenin doğru olup olmadığını değerlendirir.
değişkenin değeri boş bir dizeyle sonuçlanır.
var Bir dosya adını bağımsız değişken olarak alır ve dosyanın mevcut olup olmadığını doğru olarak değerlendirir. NS
dosya, sistem arama yolunda aranır (bkz. .YOL).
hedef Argüman olarak bir hedef adı alır ve hedefin doğru olup olmadığını değerlendirir.
tanımladı.
komutlar
Argüman olarak bir hedef adı alır ve hedefin doğru olup olmadığını değerlendirir.
tanımlanmış ve onunla ilişkili komutlara sahiptir.
ifade aritmetik veya dizi karşılaştırması da olabilir. Değişken genişletme gerçekleştirilir
karşılaştırmanın her iki tarafında, ardından integral değerleri karşılaştırılır. bir değer
önünde 0x varsa onaltılık olarak yorumlanır, aksi takdirde ondalıktır; sekizlik sayılar
desteklenmemektedir. Standart C ilişkisel işleçlerin tümü desteklenir. eğer sonra
değişken genişleme, bir ' öğesinin sol veya sağ tarafında=='veya'!=' operatör bir değil
integral değeri, daha sonra genişletilmiş değişkenler arasında dize karşılaştırması yapılır. Eğer hayırsa
ilişkisel operatör verildiğinde, genişletilmiş değişkenin karşılaştırılmakta olduğu varsayılır.
0'a karşı veya bir dize karşılaştırması durumunda boş bir dize.
Ne zaman b yapmak bu koşullu ifadelerden birini değerlendiriyor ve bir (beyaz-
boşlukla ayrılmış) kelimeyi tanımıyorsa, ya “make” ya da “tanımlanmış” ifadesi
koşullu şekline bağlı olarak ona uygulanır. formu ise '.ifdef'
'.ifndef'veya'.Eğer"tanımlı" ifadesi uygulanır. Benzer şekilde, eğer form
'.ifmake'veya'.ifnmake, the“make” ifadesi uygulanır.
Koşul, true olarak değerlendirilirse, makefile ayrıştırma işlemi daha önce olduğu gibi devam eder. Eğer o
false olarak değerlendirilir, aşağıdaki satırlar atlanır. Her iki durumda da bu, bir
'.Başka'veya'.endif' bulunan.
For döngüleri genellikle bir dosya listesine bir dizi kural uygulamak için kullanılır. sözdizimi
for döngüsü:
.için değişken [değişken Kendi ID’n ile mağazalarını oluştur] in ifade
⟨kurallar⟩
.endfor
için sonra ifade değerlendirilir, kelimelere bölünür. Her yinelemede
döngü, bir kelime alınır ve her birine atanır değişken, sırayla ve bunlar değişkenler vardır
içine ikame kurallar for döngüsünün gövdesinin içinde. kelime sayısı mutlaka
hatta çık; yani, üç yineleme değişkeni varsa, sağlanan sözcük sayısı
üçün katı olmalıdır.
YORUMLAR
Yorumlar bir kare ('#') karakteriyle başlar, kabuk komut satırı dışında herhangi bir yerde ve
çıkmamış yeni bir satırın sonuna kadar devam edin.
ÖZEL KAYNAKLARI (ÖZNİTELLİKLER)
.YÜRÜT Hedef hiçbir zaman güncelliğini yitirmez, ancak yine de komutları her zaman yürütün.
.GÖRMEZDEN GELMEK Bu hedefle ilişkili komutlardaki hataları, aynen sanki
hepsinin önünde bir tire ('-') vardı.
.YAPTI Bu hedefin tüm kaynaklarını güncel olarak işaretleyin.
.YAPMAK olsa bile bu hedefle ilişkili komutları yürütün. -n or -t seçenekler vardı
belirtildi. Normalde özyinelemeli işaretlemek için kullanılır b yapmaks.
.META olarak işaretlenmiş olsa bile hedef için bir meta dosyası oluşturun. .SAHTE, .YAPMAKya da
.ÖZEL. İle birlikte kullanım .YAPMAK en olası durumdur. "meta" içinde
modunda, meta dosya eksikse hedef güncel değildir.
.NOMETA Hedef için bir meta dosyası oluşturmayın. Meta dosyaları da oluşturulmadı
.SAHTE, .YAPMAKya da .ÖZEL hedefler.
.NOMETA_CMP
Hedefin güncel olup olmadığına karar verirken komutlardaki farklılıkları yok sayın. Bu
komut her zaman değişen bir değer içeriyorsa kullanışlıdır. sayısı ise
komutlar değişse de, hedef hala güncelliğini yitirmiş olacak. aynı etki
değişkeni kullanan herhangi bir komut satırı için geçerlidir .OODATEiçin kullanılabilir
bu amaç, aksi takdirde ihtiyaç duyulmasa veya istenmese bile:
bazıları için atla-karşılaştır:
@echo bu karşılaştırılacak
@echo bu ${.OODATE:M.NOMETA_CMP} olmayacak
@echo bu da karşılaştırılacak
The :M desen, istenmeyen değişkenin herhangi bir genişlemesini bastırır.
.NOPATH tarafından belirtilen dizinlerde hedefi aramayın. .YOL.
.MAIN DEĞİL Normalde b yapmak karşılaşacağı ilk hedefi varsayılan hedef olarak seçer.
hedef belirtilmemişse oluşturulur. Bu kaynak, bu hedefin
Seçilen.
.İSTEĞE BAĞLI
Bir hedef bu öznitelikle işaretlenmişse ve b yapmak nasıl oluşturulacağını çözemiyorum
bu gerçeği görmezden gelecek ve dosyanın gerekli olmadığını veya zaten var olduğunu varsayacaktır.
.SAHTE Hedef, gerçek bir dosyaya karşılık gelmiyor; her zaman olduğu düşünülür
güncelliğini yitirmiş ve ile oluşturulmayacak -t seçenek. sonek-dönüşüm
kurallar uygulanmaz .SAHTE hedefler.
.DEĞERLİ
Ne zaman b yapmak kesintiye uğrarsa, normalde kısmen yapılmış hedefleri kaldırır. Bu
kaynak hedefin kaldırılmasını engeller.
.özyinelemeli
eşanlamlısı .YAPMAK.
.SESSİZ Bu hedefle ilişkilendirilmiş komutların hiçbirini, tıpkı onlarmış gibi tekrarlamayın.
hepsinin önünde bir at işareti ('@') vardı.
.KULLANMAK Hedefi çevir b yapmakmakronun sürümü. Hedef olarak kullanıldığında
başka bir hedef için kaynak, diğer hedef komutları, kaynakları ve
nitelikler (hariç .KULLANMAK) kaynağıdır. Hedefin zaten komutları varsa,
the .KULLANMAK hedefin komutları bunlara eklenir.
.ÖNCE KULLAN
Tıpkı .KULLANMAK, ancak başına .ÖNCE KULLAN hedefe hedef komutları.
.BEKLE If .BEKLE bir bağımlılık satırında görünür, ondan önceki kaynaklar daha önce yapılır
hatta onu başaran kaynaklar. Dosyaların bağımlıları olmadığından
dosyanın kendisi yapılabilene kadar yapılır, bu aynı zamanda bağımlıları da durdurur.
bağımlılık ağacının başka bir dalı için gerekmedikçe oluşturulur. Yani verilen:
x: a .BEKLE b
yankı x
a:
yankı bir
b: b1
yankı b
b1:
yankı b1
çıktı her zaman 'a', 'b1', 'b', 'x' olur.
tarafından empoze edilen sipariş .BEKLE sadece paralel markalar için geçerlidir.
ÖZEL HEDEFLERİ
Özel hedefler diğer hedeflere dahil edilemez, yani tek hedef onlar olmalıdır.
belirtildi.
.BAŞLAMAK Bu hedefe eklenmiş herhangi bir komut satırı, başka bir şey yapılmadan önce yürütülür.
bitti.
.VARSAYILAN
Bu bir çeşit .KULLANMAK (yalnızca kaynak olarak kullanılan) herhangi bir hedef için kural
b yapmak yaratmanın başka bir yolunu bulamıyor. Yalnızca kabuk betiği kullanılır.
The .IMPSRC miras alan bir hedefin değişkeni .VARSAYILAN' komutları olarak ayarlandı
hedefin kendi adı.
. END Bu hedefe eklenmiş herhangi bir komut satırı, diğer her şey tamamlandıktan sonra yürütülür.
bitti.
.HATA Bu hedefe eklenmiş herhangi bir komut satırı, başka bir hedef başarısız olduğunda yürütülür.
The .ERROR_TARGET değişken başarısız olan hedefe ayarlanır. Ayrıca bakınız
MAKE_PRINT_VAR_ON_ERROR YAPIN.
.GÖRMEZDEN GELMEK Kaynakların her birini işaretle .GÖRMEZDEN GELMEK bağlanmak. Kaynak belirtilmemişse,
bu, belirtmenin eşdeğeridir -i seçeneği.
.KESMEK
If b yapmak kesintiye uğrarsa, bu hedef için komutlar yürütülür.
.ANA Herhangi bir hedef belirtilmemişse b yapmak çağrılırsa, bu hedef oluşturulacaktır.
.MAKEFLAGLAR
Bu hedef, aşağıdakiler için bayrak belirtmenin bir yolunu sağlar: b yapmak makefile kullanıldığında.
Bayraklar kabuğa yazılmış gibidir, ancak -f seçeneğin hiçbir etkisi olmayacaktır.
.NOPATH Uygulamak .NOPATH belirtilen herhangi bir kaynağa öznitelik.
.PARALEL DEĞİL
Paralel modu devre dışı bırakın.
.NO_PARALLEL
eşanlamlısı .PARALEL DEĞİL, diğer pmake varyantlarıyla uyumluluk için.
.OBJDIR Kaynak, ' için yeni bir değerdir..OBJDIR'. eğer varsa, b yapmak irade chdir(2) ona
ve ' değerini güncelleyin.OBJDIR'.
.EMİR Adlandırılmış hedefler sırayla yapılır. Bu sıralama, hedef listeye hedef eklemez.
yapılacak hedeflerin listesi. Bir hedefin bağımlıları inşa edilmediğinden
'a' başka bir parça tarafından inşa edilmediği sürece, hedefin kendisi inşa edilene kadar
bağımlılık grafiği, aşağıdaki bir bağımlılık döngüsüdür:
.SİPARİŞ: ba
b: bir
tarafından empoze edilen sipariş .EMİR sadece paralel markalar için geçerlidir.
.YOL Kaynaklar, içinde bulunmayan dosyalar için aranacak dizinlerdir.
geçerli dizin. Herhangi bir kaynak belirtilmemişse, daha önce belirtilen herhangi bir kaynak
dizinler silinir. Kaynak özel ise .DOTLAST hedef, ardından
mevcut çalışma dizini en son aranır.
.YOL.sonek
Facebok sayfasını beğenin : .YOL ancak yalnızca belirli bir son eki olan dosyalar için geçerlidir. sonek gerekir
ile daha önce ilan edilmişti .SONEKLER.
.SAHTE Uygulamak .SAHTE belirtilen herhangi bir kaynağa öznitelik.
.DEĞERLİ
Uygulamak .DEĞERLİ belirtilen herhangi bir kaynağa öznitelik. hiçbir kaynak yoksa
belirtilen, .DEĞERLİ nitelik, dosyadaki her hedefe uygulanır.
.KABUK Kabuğu ayarlar b yapmak komutları yürütmek için kullanacaktır. Kaynaklar bir dizi
alan=değer çiftleri.
isim Bu, yerleşik özelliklerden birini seçmek için kullanılan minimum özelliktir.
kabuk özellikleri; sh, ksh, ve csh.
yol Kabuğa giden yolu belirtir.
hasErrCtl Kabuğun hata durumunda çıkışı destekleyip desteklemediğini gösterir.
Kontrol Hata denetimini açma komutu.
aldırmamak Hata denetimini devre dışı bırakma komutu.
kaçırmak Yürütülen komutların yankılanmasını açma komutu.
sessiz Yürütülen komutların yankılanmasını kapatma komutu.
filtre Yayınlandıktan sonra filtrelenecek çıktı sessiz emretmek. tipik olarak
ile özdeş sessiz.
hata bayrağı Hata denetimini etkinleştirmek için kabuğu geçecek bayrak.
yankıFlag Komut yankılanmasını etkinleştirmek için kabuğun geçeceği bayrak.
Yeni hat Tek bir yeni satırla sonuçlanan kabuğu geçmek için dize değişmezi
karakter herhangi bir alıntı karakterinin dışında kullanıldığında.
Örnek:
.SHELL: name=ksh yolu=/bin/ksh hasErrCtl=true \
check="set -e" yoksay="set +e" \
echo="set -v" sessiz="set +v" filter="set +v" \
echoFlag=v errFlag=e yeni satır="'\n'"
.SESSİZ Uygulamak .SESSİZ belirtilen herhangi bir kaynağa öznitelik. Kaynak belirtilmemişse,
the .SESSİZ nitelik, dosyadaki her komuta uygulanır.
.BAYAT Bu hedef, bir bağımlılık dosyası eski girdiler içerdiğinde çalıştırılır. .ALLSRC
bu bağımlılık dosyasının adına ayarlayın.
.SONEKLER
Her kaynak için bir sonek belirtir. b yapmak. Herhangi bir kaynak belirtilmemişse, herhangi bir
daha önce belirtilen son ekler silinir. Sonek oluşturulmasına izin verir-
dönüşüm kuralları.
Örnek:
.SONEKLER: .o
.co:
cc -o ${.TARGET} -c ${.IMPSRC}
ÇEVRE
b yapmak varsa, aşağıdaki ortam değişkenlerini kullanır: MACHINE, MACHINE_ARCH,
MACHINE_MULTIARCH, MAKE, MAKEFLAGS, MAKEOBJDIR, MAKEOBJDIRPREFIX, MAKESYSPATH, PWD ve
TMPDIR.
MAKEOBJDIRPREFIX ve MAKEOBJDIR yalnızca ortamda veya komut satırında şu şekilde ayarlanabilir:
b yapmak ve makefile değişkenleri olarak değil; açıklamasına bakın'.OBJDIR' daha fazla ayrıntı için.
onworks.net hizmetlerini kullanarak pmake'i çevrimiçi kullanın