İngilizceFransızcaİspanyolca

Ad


OnWorks favicon'u

makeposix - Bulutta Çevrimiçi

OnWorks ücretsiz barındırma sağlayıcısında makeposix'i Ubuntu Online, Fedora Online, Windows çevrimiçi emülatörü veya MAC OS çevrimiçi emülatörü üzerinden çalıştırın

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 makeposix komutudur.

Program:

ADI


program gruplarını yap - bakımını yap, güncelle ve yeniden oluştur (GELİŞME)

SİNOPSİS


yapmak [-einpqrst] [-f makefile]... [-k|-S] [makro=değer...]
[hedef_adı...]

TANIM


The yapmak yardımcı program, diğer dosyalardan türetilen dosyaları güncelleyecektir. Tipik bir vaka
nesne dosyalarının ilgili kaynak dosyalardan türetildiği bir yer. NS yapmak yarar
zaman ilişkilerini inceler ve türetilmiş dosyaları (hedefler olarak adlandırılır) günceller.
dosyaların değiştirilen zamanlarından daha önce değiştirilmiş zamanlara sahip olmak (önkoşullar olarak adlandırılır)
bunlardan türetilmiştir. Bir açıklama dosyası (makefile), aşağıdakilerin bir açıklamasını içerir:
dosyalar arasındaki ilişkiler ve dosyayı güncellemek için yürütülmesi gereken komutlar
önkoşullarındaki değişiklikleri yansıtmayı hedefler. Her şartname veya kural,
bir hedef, isteğe bağlı önkoşullar ve bir
önkoşul hedeften daha yeni. İki tür kural vardır:

1. sonuç kurallar, en az bir tane olan bir hedef adı olan (".") ve hayır
('/')

2. Hedef kurallarbirden fazla hedef adına sahip olabilen

Ek olarak, yapmak sağlayan yerleşik makrolar ve çıkarım kuralları koleksiyonuna sahip olacaktır.
programların bakımını basitleştirmek için önkoşul ilişkileri çıkarın.

Bu bölümde açıklanan davranışı tam olarak almak için kullanıcı,
taşınabilir makefile:

* Özel hedefi dahil et .POSIX

* Uygulamalar için ayrılmış herhangi bir özel hedefi atlayın (önde gelen bir dönem ve ardından
bu bölümde belirtilmeyen büyük harfler)

davranışı yapmak Bu koşullardan biri veya her ikisi karşılanmadığında belirtilmemiştir.

SEÇENEKLER


The yapmak yardımcı program, POSIX.1‐2008'in Temel Tanımlar hacmine uygun olacaktır, Bölüm
12.2, Yarar Sözdizimi Kuralları, Kılavuz İlke 9 hariç.

Aşağıdaki seçenekler desteklenecektir:

-e Boş değerlere sahip olanlar da dahil olmak üzere ortam değişkenlerinin makroyu geçersiz kılmasına neden olur
makefiles içindeki atamalar.

-f makefile
Farklı bir makefile belirtin. Argüman makefile bir yol adıdır
olarak da adlandırılan açıklama dosyası makefile. bir yol adı '-'
standart girişi belirtecektir. Bu seçeneğin birden çok örneği olabilir,
ve belirtilen sıraya göre işlenecektir. belirtmenin etkisi
aynı seçenek argümanı birden fazla belirtilmemiş.

-i Çağrılan komutlar tarafından döndürülen hata kodlarını yok sayın. Bu mod, tıpkı
özel hedef .GÖRMEZDEN GELMEK önkoşul olmaksızın belirtilmiştir.

-k Mevcut hedefe bağlı olmayan diğer hedefleri güncellemeye devam edin.
bir hedefi en üst düzeye getirmek için komutlar yürütülürken göz ardı edilmeyen hata oluşur.
tarih.

-n Standart çıktıda yürütülecek ancak yürütülmeyen komutları yazın
onlara. Ancak, a ile satırlar ('+') öneki yürütülür. Bunda
modu, bir at işareti olan satırlar ('@') karakter öneki standart olarak yazılacaktır
çıktı.

-p Tüm makro tanımları ve hedef setini standart çıktıya yazın
Açıklamalar. Çıktı formatı belirtilmemiş.

-q Hedef dosya güncelse sıfır çıkış değeri döndür; aksi takdirde, bir
çıkış değeri 1 Bu seçenek belirtilirse hedefler güncellenmeyecektir.
Ancak, bir makefile komut satırı (hedeflerle ilişkili)
işaret> ('+') öneki yürütülür.

-r Son ek listesini temizleyin ve yerleşik kuralları kullanmayın.

-S bitirmek yapmak bir hedef getirmek için komutları yürütürken bir hata oluşursa
güncel. Bu varsayılan ve tersi olacaktır -k.

-s makefile komut satırları yazmayın veya mesajlara dokunmayın (bkz. -t) standart olarak
yürütmeden önce çıktı. Bu mod, özel hedef ile aynı olacaktır.
.SESSİZ önkoşul olmaksızın belirtilmiştir.

-t Her hedefin değişiklik zamanını, sanki bir dokunma hedef olmuştu
uygulanmış. Önkoşulları olan ancak komutları olmayan hedefler (bkz. Hedef kurallar) veya
zaten güncel olanlara bu şekilde dokunulmayacaktır. Yazı yazmak
dosyanın adını gösteren her hedef dosya için standart çıktıya iletiler
ve dokunduğunu söyledi. Normalde, makefile ile ilişkili komut satırları
her hedef yürütülmez. Ancak, bir komut satırı ('+')
önek yürütülür.

içinde belirtilen herhangi bir seçenek MAKEFLAGLAR ortam değişkeni, herhangi bir
üzerinde belirtilen seçenekler yapmak yardımcı program komut satırı. Eğer -k ve -S seçenekler her ikisi de
üzerinde belirtilen yapmak yardımcı program komut satırı veya MAKEFLAGLAR ortam değişkeni,
belirtilen son seçenek öncelikli olacaktır. Eğer -f or -p seçeneklerde görünüyor
MAKEFLAGLAR ortam değişkeni, sonuç tanımsız.

İŞLENENLER


Aşağıdaki işlenenler desteklenecektir:

hedef_adı
GENİŞLETİLMİŞ AÇIKLAMA bölümünde tanımlandığı gibi hedef adları. hedef yoksa
belirtilirken, yapmak ilk hedef olan makefile dosyalarını işliyor yapmak
özel hedef veya çıkarım kuralı olmayan karşılaşmalar kullanılacaktır.

makro=değer
Makro tanımları, içinde tanımlandığı gibi Makrolar.

Eğer hedef_adı ve makro=değer işlenenler karıştırılır yapmak yardımcı program komutu
satır, sonuçlar belirtilmemiş.

STDIN


Standart girdi, yalnızca aşağıdaki durumlarda kullanılacaktır: makefile seçenek argümanı '-'. Bakın
GİRİŞ DOSYALARI bölümü.

GİRİŞ DOSYALAR


Makefile olarak da bilinen girdi dosyası, kuralları, makroyu içeren bir metin dosyasıdır.
tanımlar ve yorumlar. GENİŞLETİLMİŞ AÇIKLAMA bölümüne bakın.

ÇEVRE DEĞİŞKENLER


Aşağıdaki ortam değişkenleri, aşağıdakilerin yürütülmesini etkiler: yapmak:

DİL Ayarlanmamış veya ayarlanmamış uluslararasılaştırma değişkenleri için varsayılan bir değer sağlayın.
boş. (Bkz. POSIX.1‐2008'in Temel Tanımlar cildi, Bölüm 8.2,
Uluslararasılaşma Değişkenler uluslararasılaşmanın önceliği için
yerel kategorilerin değerlerini belirlemek için kullanılan değişkenler.)

LC_ALL Boş olmayan bir dize değerine ayarlanırsa, diğer tüm değerlerin değerlerini geçersiz kılın
uluslararasılaştırma değişkenleri.

LC_CTYPE Metin verisi bayt dizilerinin yorumlanması için yerel ayarı belirleyin
karakter olarak (örneğin, çoklu bayt karakterlerin aksine tek bayt
argümanlar ve girdi dosyaları).

LC_MESSAGES
biçimini ve içeriğini etkilemek için kullanılması gereken yerel ayarı belirleyin.
standart hataya yazılan teşhis mesajları.

MAKEFLAGLAR
Bu değişken, bir diziyi temsil eden bir karakter dizisi olarak yorumlanmalıdır.
varsayılan seçenekler olarak kullanılacak seçenek karakterlerinin sayısı. Uygulama
aşağıdaki biçimlerin her ikisini de kabul edin (ancak karıştırıldığında bunları kabul etmeniz gerekmez):

* Karakterler, başında olmayan seçenek harfleridir karakterler veya
kullanılan ayırma yapmak yardımcı program komut satırı.

* Karakterler, metnin bir kısmına benzer şekilde biçimlendirilmiştir. yapmak
yardımcı program komut satırı: seçeneklerden önce karakterler ve
-Temel Tanımlar bölümünde açıklandığı gibi ayrılmış
POSIX.1-2008, Bölüm 12.2, Yarar Sözdizimi Kuralları. makro=değer
makro tanım işlenenleri de dahil edilebilir. arasındaki fark
içeriği MAKEFLAGLAR ve yapmak yardımcı program komut satırı, içeriğin
değişkenin kelime açılımlarına tabi tutulmamalıdır (bkz. Bölüm
2.6, Word Genişletme) komut satırı değerlerinin ayrıştırılmasıyla ilişkili.

NLSPATH İşleme için mesaj kataloglarının yerini belirleyin. LC_MESSAGES.

PROJEDİR
Geçerli dosyada bulunmayan SCCS dosyalarını aramak için kullanılacak bir dizin sağlayın.
dizin. Aşağıdaki durumların tümünde, SCCS dosyalarının aranması şurada yapılır:
Rehber SCCS tanımlanan dizinde. değeri ise PROJEDİR
bir ile başlar , mutlak bir yol adı olarak kabul edilecektir; aksi halde,
değerini PROJEDİR bir kullanıcı adı olarak kabul edilir ve bu kullanıcının ilk adı
çalışma dizini bir alt dizin için incelenir src or kaynak. Eğer böyle bir
dizin bulunursa kullanılacaktır. Aksi takdirde, değer göreceli olarak kullanılır
yol adı.

If PROJEDİR ayarlanmadıysa veya boş bir değere sahip değilse, SCCS dosyalarının aranması
dizinde yapıldı SCCS geçerli dizinde.

Ayarı PROJEDİR bunun geri kalanında listelenen tüm dosyaları etkiler
adlı bir bileşene sahip dosyalar için yardımcı program açıklaması SCCS.

Değeri SHELL ortam değişkeni makro olarak kullanılmayacak ve
tanımlanarak değiştirilmiştir. SHELL makefile veya komut satırında makro. Diğer tüm
boş değerlere sahip olanlar da dahil olmak üzere ortam değişkenleri, makrolar olarak kullanılacaktır.
tanımlanmış Makrolar.

ASENKRON ETKİNLİKLER


Zaten göz ardı edilmediyse, yapmak SIGHUP, SIGTERM, SIGINT ve SIGQUIT'i yakalar ve kaldırır
hedef bir dizin olmadıkça veya hedef bir önkoşul olmadıkça geçerli hedef
özel hedef .DEĞERLİ veya bunlardan biri olmadıkça -n, -pya da -q seçenekler belirlendi. Herhangi
Bu şekilde kaldırılan hedefler, tanımlanmamış teşhis mesajlarında rapor edilecektir.
biçiminde, standart hataya yazılmıştır. Bu temizleme işleminden sonra varsa, yapmak alacak
diğer tüm sinyaller için standart eylem.

STDOUT


The yapmak yardımcı program çalıştırılacak tüm komutları standart çıktıya yazacaktır. -s
seçenek belirtilmişse, komutun önüne bir işaret veya özel hedef konulmuştur.
.SESSİZ önkoşul olarak geçerli hedefi vardır veya önkoşulları yoktur. Eğer yapmak
herhangi bir işlem yapılmasına gerek kalmadan çağrılırsa standarda mesaj yazacaktır.
Herhangi bir işlem yapılmadığını gösteren çıktı. Eğer -t seçenek mevcut ve bir dosya
dokundu, yapmak standart çıktıya belirtilmemiş formatta bir mesaj yazacaktır.
dosyanın dosya adı da dahil olmak üzere dosyaya dokunulduğunu.

STDER


Standart hata sadece teşhis mesajları için kullanılacaktır.

ÇIKTI DOSYALAR


Dosyalar oluşturulabilir -t seçeneği mevcut. Ek dosyalar da oluşturulabilir
tarafından çağrılan yardımcı programlar tarafından yapmak.

GENİŞLETİLMİŞ TANIM


The yapmak yardımcı program belirtilenin sağlanması için gerekli eylemleri gerçekleştirmeye çalışır.
hedefler günceldir. Bir hedef, hedeflerinden herhangi birinden daha eskiyse, güncelliğini yitirmiş olarak kabul edilir.
önkoşullar veya mevcut değilse. NS yapmak kamu hizmeti, tüm önkoşulları şu şekilde ele alacaktır:
kendilerini hedefler ve yinelemeli olarak güncel olmalarını sağlar, bunları
kuralda göründükleri sırayla. NS yapmak yardımcı program değişiklik sürelerini kullanacaktır
ilgili hedeflerin güncelliğini yitirmiş olup olmadığını belirlemek için dosya sayısı.

Sonra yapmak bir hedefin tüm ön koşullarının güncel olmasını sağlamıştır ve eğer
hedef güncel değil, hedef girişi ile ilgili komutlar yürütülecektir. Eğer
hedef için listelenen komut yok, hedef güncel olarak kabul edilecektir.

Makefile Sözdizimi
Bir makefile kurallar, makro tanımları içerebilir (bkz. Makrolar), satırları ve yorumları içerir.
İki tür kural vardır: sonuç kurallar ve hedef kurallar. yapmak kamu hizmeti
bir dizi yerleşik çıkarım kuralı içerir. Eğer -r seçenek mevcut, yerleşik kurallar
kullanılmayacak ve ek listesi silinecektir. Her iki türün ek kuralları
makefile içinde belirtilmelidir. Bir kural birden fazla tanımlanmışsa kuralın değeri
belirtilen sonuncusu olacaktır. Makrolar ayrıca bir kereden fazla tanımlanabilir ve
makronun değeri belirtilir Makrolar. Yorumlar bir ile başlar ('#')
ve bir kaçış olmayana kadar devam edin ulaşıldı.

Varsayılan olarak, aşağıdaki dosyalar sırayla denenecektir: ./make dosyası ve ./Make dosyası. Eğer
ne ./make dosyası or ./Make dosyası bulunursa, diğer uygulama tanımlı dosyalar da olabilir
sınanmış. XSI uyumlu sistemlerde, ek dosyalar ./s.make dosyası, SCCS/s.make dosyası,
./s.Makefile, ve SCCS/s.Makefile da denenecektir.

The -f seçenek yönlendirecek yapmak bu varsayılan dosyalardan herhangi birini yok saymak ve belirtilenleri kullanmak için
argüman yerine makefile olarak. Eğer '-' argüman belirtilir, standart girdi olur
Kullanılmış.

Süreli makefile içinde olsun, kullanıcı tarafından sağlanan herhangi bir kurala atıfta bulunmak için kullanılır.
./make dosyası veya varyantları veya tarafından belirtilen -f seçeneği.

Makefiles'deki kurallar aşağıdaki satır türlerinden oluşacaktır: hedef kurallar,
özel hedefler dahil (bkz. Hedef kurallar), çıkarım kuralları (bkz. sonuç kurallar), makro
tanımlar (bkz. Makrolar), boş satırlar ve yorumlar.

Hedef ve Çıkarım Kuralları şunları içerebilir: komuta hatları. Komut satırlarının bir öneki olabilir
yürütmeden önce kaldırılacaktır (bkz. Makefile infaz).

Ne zaman kaçtı (önce bir ) içinde herhangi bir yerde bulunur
makefile komut satırı, içerme satırı veya bir satırdan hemen önceki satır dışında
satırı içeriyorsa, aşağıdaki herhangi bir önde gelen beyaz boşlukla birlikte değiştirilecektir.
tek hat ile . Ne zaman kaçtı bir komut satırında bulunur
makefile, komut satırı şunları içerecektir , NS , ve sonraki
satır, ancak sonraki satırın ilk karakteri bir satır ise dahil edilmeyecektir.
. Ne zaman kaçtı bir içerme satırında veya hemen bir satırda bulunur
içerme satırından önce, davranış belirtilmemiştir.

Dahil çizgiler
Eğer kelime dahil satırın başında görünür ve ardından bir veya daha fazla
karakter, satırın geri kalanı tarafından oluşturulan dize olarak işlenecektir.
bir yol adı üretmek için şunları yapar:

* takip eden ve herhangi bir yorum atılacaktır. Sonuç dizesi ise
herhangi bir çift tırnak karakteri içeriyor ('''') davranış belirtilmemiş.

* Ortaya çıkan dize, makro genişletme için işlenecektir (bkz. Makrolar.

* Herhangi olmayan ilk karakterden sonra görünen karakterler olarak kullanılacak
makroyla genişletilmiş dizeyi alanlara bölmek için ayırıcılar. olup olmadığı belirtilmemiş
diğer boşluk karakterleri de ayırıcı olarak kullanılır. belirtilmemiş
yol adı genişletmesi olup olmadığı (bkz. Bölüm 2.13, model Uygun Gösterim) aynı zamanda
seslendirdi.

* Ayırıcıların işlenmesi ve isteğe bağlı yol adı genişletmesi sıfırdan herhangi biriyle sonuçlanırsa
veya iki veya daha fazla boş olmayan alan varsa, davranış belirtilmemiştir. Eğer biriyle sonuçlanırsa
boş olmayan alan, bu alan yol adı olarak alınır.

Yol adı bir ile başlamıyorsa '/' mevcut duruma göre muamele görecektir
makefile dosyasını içeren dizine göre değil, sürecin çalışma dizini.
Dosya bu konumda yoksa, ek olup olmadığı belirtilmemiştir.
dizinler aranır.

Yol adı ile belirtilen dosyanın içeriği, okunacak ve işlenecektir.
makefile'de include satırının yerine göründü. Dosya bir çıkış karakteri ile bitiyorsa
davranış belirsizdir.

Dosyanın kendisi ayrıca içerme satırları içerebilir. Uygulamalar yuvalamayı destekleyecektir
en az 16 derinliğe kadar dosya içerir.

Makefile infaz
Makefile komut satırları birer birer işlenecektir.

Makefile komut satırları aşağıdaki öneklerden bir veya daha fazlasına sahip olabilir: a ('-'),
bir işaret ('@') veya bir ('+'). Bunlar, kullanım şeklini değiştirecektir. yapmak
komutu işler.

− Komut öneki bir , ya da -i seçeneği mevcut veya
özel hedef .GÖRMEZDEN GELMEK önkoşul olarak mevcut hedefe sahip veya hiçbir
önkoşullar, komut yürütülürken bulunan herhangi bir hata yok sayılır.

@ Komut öneki bir at işareti içeriyorsa ve yapmak yardımcı program komut satırı -n
seçenek belirtilmemiş veya -s seçenek mevcut veya özel hedef .SESSİZ
önkoşul olarak geçerli hedefi var veya önkoşulu yok, komut
yürütülmeden önce standart çıktıya yazılmaz.

+ Komut öneki bir , bu bir makefile komut satırını gösterir
olsa bile yürütülecek -n, -qya da -t belirtilir.

An infaz hat herhangi bir önek karakteri kaldırılarak komut satırından oluşturulur. Hariç
at-sign öneki altında açıklandığı gibi, yürütme satırı standarda yazılacaktır.
çıktı, isteğe bağlı olarak öncesinde bir . Yürütme satırı daha sonra bir
kabuk, argüman olarak geçirilmiş gibi sistem() arayüzü, bunun dışında
hatalar göz ardı edilmiyor, ardından kabuk -e seçeneği de geçerli olacaktır. eğer hatalar
komut için yoksayılıyor (bir sonucu olarak -i seçenek, a '-' komut öneki veya
a .GÖRMEZDEN GELMEK özel hedef), kabuk -e seçeneği geçerli olmayacaktır. için ortam
yürütülmekte olan komut, ortamdaki tüm değişkenleri içerecektir. yapmak.

Varsayılan olarak, ne zaman yapmak bir komutun yürütülmesinden sıfır olmayan bir durum alırsa,
standart hataya bir hata mesajı ile sonlandırın.

Hedef kurallar
Hedef kurallar aşağıdaki gibi biçimlendirilir:

hedef [hedef...]: [önkoşul...][;komuta]
[komuta
komuta
...]

hat o yok değil başlamak ile

Hedef girişleri bir ile belirtilir - ayrılmış, boş olmayan hedef listesi, ardından bir
, sonra bir - ayrılmış, muhtemelen boş önkoşullar listesi. Aşağıdaki metin
, varsa ve ardından a ile başlayan tüm satırlar , makefile komutudur
hedefi güncellemek için yürütülecek satırlar. Başlamayan ilk boş olmayan satır
Birlikte veya '#' yeni bir girişe başlayacaktır. Boş veya boş bir satır veya bir satır başlangıcı
ile '#', yeni bir girişe başlayabilir.

Uygulamalar, yalnızca aşağıdakilerden oluşan karakter kümesinden hedef adları seçecektir:
taşınabilir karakter kümesindeki noktalar, alt çizgiler, rakamlar ve alfabetikler (bkz.
POSIX.1‐2008'in Temel Tanımlar hacmi, Bölüm 6.1, Taşınabilir Karakter set).
Uygulamalar, hedef adlardaki diğer karakterlere uzantı olarak izin verebilir. NS
karakterleri içeren hedeflerin yorumlanması '%' ve '''' uygulama tanımlıdır.

Önkoşulları olan ancak herhangi bir komutu olmayan bir hedef,
bu hedef için önkoşul listesi. Herhangi bir hedef için yalnızca bir hedef kuralı içerebilir
emreder.

Aşağıdakilerden biriyle başlayan satırlara denir özel hedefler ve kontrol et
operasyonu yapmak:

.VARSAYILAN makefile bu özel hedefi kullanıyorsa, uygulama bunu sağlamalıdır.
komutlarla belirtilir, ancak önkoşullar olmadan. komutlar
kullandığı yapmak bir hedef oluşturmak için kullanılabilecek başka bir kural yoksa.

.GÖRMEZDEN GELMEK Bu özel hedefin önkoşulları hedeflerin kendisidir; bu neden olur
bunlarla aynı şekilde yok sayılacak komutlardan kaynaklanan hatalar
tarafından belirtilen -i seçenek. sonraki olaylar .GÖRMEZDEN GELMEK ekleyecek
komut hatalarını yok sayan hedeflerin listesi. Herhangi bir ön koşul belirtilmemişse, yapmak
gibi davranacak -i seçenek belirtilmiş ve tüm komutlardan gelen hatalar
tüm hedeflerle ilişkili olarak göz ardı edilecektir.

.POSIX Uygulama, bu özel hedefin belirtilmesini sağlamalıdır.
önkoşullar veya komutlar. İlk yorum olmayan satır olarak görünüyorsa
makefile, yapmak makefile'i bu bölümde belirtildiği gibi işleyecektir;
Aksi takdirde, davranışı yapmak belirtilmemiş.

.DEĞERLİ Bu özel hedefin ön koşulları, aşağıdaki durumlarda kaldırılmaz: yapmak bir tane alır
ASENKRON OLAYLAR bölümünde açıkça açıklanan eşzamansız olayların
Bölüm. sonraki olaylar .DEĞERLİ değerliler listesine eklenecek
Dosyalar. Herhangi bir ön koşul belirtilmemişse, makefile içindeki tüm hedefler
ile belirtilmiş gibi işlem görür .DEĞERLİ.

.SCCS_GET Uygulama, bu özel hedefin belirtilmesini sağlamalıdır.
önkoşullar. Bu özel hedef bir makefile dosyasına dahil edilmişse, komutlar
bu hedefle belirtilen varsayılan komutların yerini alacaktır.
bu özel hedef (bkz. Varsayılan kurallar). Bununla belirtilen komutlar
hedef, geçerli dosyada bulunmayan tüm SCCS dosyalarını almak için kullanılır.
dizin.

Kaynak dosyalar bir bağımlılık listesinde isimlendirildiğinde, yapmak onlara adil davranacak
başka bir hedef gibi. Kaynak dosyanın mevcut olduğu varsayıldığından,
dizini, makefile için bir girdi eklemeye gerek yoktur. Zaman
hedefin bağımlılığı yoktur, ancak dizinde bulunur, yapmak üstlenecek
o dosyanın güncel olduğunu Bununla birlikte, adlı bir SCCS dosyası varsa SCCS/s.Kaynak dosyası
bir hedef için bulunur Kaynak dosyası, yapmak hedefin zaman damgasını karşılaştırır
ile dosya SCCS/s.kaynak_dosyası Hedefin güncel olduğundan emin olmak için. Eğer
hedef eksikse veya SCCS dosyası daha yeniyse, yapmak otomatik olarak
için belirtilen komutları verin. .SCCS_GET almak için özel hedef
en son sürüm. Ancak, hedef herhangi biri tarafından yazılabilir ise, yapmak -ecek
yeni bir sürüm almayın.

.SESSİZ Bu özel hedefin önkoşulları hedeflerin kendisidir; bu neden olur
önce standart çıktıya yazılmaması için bunlarla ilişkili komutlar
idam edilirler. sonraki olaylar .SESSİZ listesine eklenecek
sessiz komutlarla hedefler. Herhangi bir ön koşul belirtilmemişse, yapmak -ecek
varmış gibi davran -s seçenek belirtilmiş ve komut veya dokunma mesajı yok
herhangi bir hedefle ilişkili standart çıktıya yazılacaktır.

.SONEKLER Önkoşulları .SONEKLER bilinen son ekler listesine eklenir ve
çıkarım kurallarıyla birlikte kullanılır (bkz. sonuç kurallar). eğer
.SONEKLER herhangi bir önkoşul yoksa, bilinen son ekler listesi
temizlendi.

özel hedefler .GÖRMEZDEN GELMEK, .POSIX, .DEĞERLİ, .SESSİZ, ve .SONEKLER belirtilecektir
komutlar olmadan.

Önde gelen isimlerden oluşan hedefler ardından büyük harfler
"POSIX" ve sonra diğer karakterler gelecekteki standardizasyon için ayrılmıştır. Hedefler
önde gelen isimlerden oluşan isimlerle arkasından bir veya daha fazla büyük harf gelir
uygulama uzantıları için ayrılmıştır.

Makrolar
Makro tanımları şu şekildedir:

string1 = [string2]

adlı makro string1 değerine sahip olarak tanımlanır. string2, Burada string2 is
varsa, tüm karakterler olarak tanımlanır , bir yorum karakterine kadar
('#') veya kaçmayan . Herhangi karakterlerden hemen önce veya sonra
göz ardı edilecektir.

Uygulamalar, yalnızca aşağıdakilerden oluşan karakter kümesinden makro adlarını seçecektir.
taşınabilir karakter kümesindeki noktalar, alt çizgiler, rakamlar ve alfabetikler (bkz.
POSIX.1‐2008'in Temel Tanımlar hacmi, Bölüm 6.1, Taşınabilir Karakter set). bir makro
isim bir içermemelidir . Uygulamalar diğer karakterlere izin verebilir
makro adları uzantı olarak.

Makrolar makefile içinde herhangi bir yerde görünebilir. $( formlarını kullanan makro açılımlarıstring1) Veya
${string1} ile değiştirilecektir string2, aşağıdaki gibi:

* Hedef satırlarındaki makrolar, hedef satırı okunduğunda değerlendirilecektir.

* makefile komut satırlarındaki makrolar, komut yürütüldüğünde değerlendirilecektir.

* Önce dizedeki makrolar bir makro tanımında değerlendirilecektir
makro ataması yapıldığında.

* Ardından makrolar bir makro tanımındaki
tanımlı makro, bir kuralda veya komutta veya bir makroda
tanım.

Parantezler veya parantezler aşağıdaki durumlarda isteğe bağlıdır: string1 tek karakterdir. makro $$
tek karakterle değiştirilecektir '$'. Eğer string1 bir makro genişletmede bir
makro genişletme, sonuçlar belirtilmemiş.

$( formlarını kullanan makro açılımlarıstring1[:subst1=[subst2]]) Veya
${string1[:subst1=[subst2]]} tüm oluşumlarını değiştirmek için kullanılabilir subst1 ile subst2
makro değiştirme gerçekleştirildiğinde. NS subst1 değiştirilecek kabul edilecektir
bir kelimenin sonunda bir son ek olduğunda string1 (burada bir sözcük, bu bağlamda,
satırın başlangıcıyla sınırlandırılmış bir dize olarak tanımlanan bir veya bir ).
If string1 bir makro genişletmede bir makro genişletme içerir, sonuçlar belirtilmemiştir.

makro açılımları string1 makro tanım satırları okunduğunda değerlendirilecektir. Makro
genişlemeler string2 makro tanım satırları, makro
tarafından tanımlanan string1 bir kural veya komutta genişletilir.

Makro tanımları aşağıdaki kaynaklardan, aşağıdaki mantıksal olarak alınacaktır:
sipariş, makefile(ler) okunmadan önce.

1. Ekranda belirtilen makrolar yapmak yardımcı program komut satırında belirtilen sırada
Komut satırı. İçinde tanımlanan dahili makroların olup olmadığı belirtilmemiştir. İç Makrolar
bu kaynaktan kabul edilmektedir.

2. Tarafından tanımlanan makrolar MAKEFLAGLAR ortam değişkeni, belirtilen sırada
Çevre değişkeni. İçinde tanımlanan dahili makroların olup olmadığı belirtilmemiştir.
İç Makrolar bu kaynaktan kabul edilmektedir.

3. Ortamın içeriği, aşağıdakiler hariç MAKEFLAGLAR ve SHELL değişkenler ve
boş değerlere sahip değişkenler dahil.

4. Yerleşik çıkarım kurallarında tanımlanan makrolar yapmak.

Bu kaynaklardan gelen makro tanımları, daha düşük seviyedeki makro tanımları geçersiz kılmaz.
numaralı kaynak. Tek bir kaynaktan makro tanımları (örneğin, yapmak yarar
komut satırı, MAKEFLAGLAR ortam değişkeni veya diğer ortam değişkenleri)
aynı kaynaktan önceki makro tanımlarını geçersiz kılacaktır.

Makefile(ler)de tanımlanan makrolar, kendilerinden önceki makro tanımlarını geçersiz kılacaktır.
kaynak 4'teki makefile(ler)de ve makro tanımlarında -e seçenek belirtilmemiş,
makefile(ler)de tanımlanan makrolar, kaynak 3'teki makro tanımlarını geçersiz kılacaktır.
makefile(ler)de tanımlananlar, kaynak 1 veya kaynak 2'den gelen makro tanımlarını geçersiz kılmaz.

Makefile(ler) okunmadan önce, tüm yapmak yardımcı program komut satırı seçenekleri (hariç -f
ve -p) Ve yapmak yardımcı program komut satırı makro tanımları (herhangi bir MAKEFLAGLAR
makro), zaten dahil değil MAKEFLAGLAR makro eklenecektir. MAKEFLAGLAR
makro, uygulama tanımlı bir şekilde alıntı yapıldığında MAKEFLAGLAR tarafından okundu
başka bir örneği yapmak komutu, orijinal makronun değeri kurtarılır. Başka
uygulama tanımlı seçenekler ve makrolar da eklenebilir. MAKEFLAGLAR makro. Eğer
bu, değerini değiştirir MAKEFLAGLAR makro veya MAKEFLAGLAR makro değiştirildi
sonraki herhangi bir zaman, MAKEFLAGLAR ortam değişkeni, yeni ile eşleşecek şekilde değiştirilecektir.
değeri MAKEFLAGLAR makro. Ayarın sonucu MAKEFLAGLAR Makefile'da
belirtilmemiş.

Makefile(ler) okunmadan önce, tüm yapmak yardımcı program komut satırı makro tanımları
(hariç MAKEFLAGLAR makro veya SHELL makro) ortamına eklenecektir. yapmak.
Diğer uygulama tanımlı değişkenler de ortamına eklenebilir. yapmak.

The SHELL makro özel olarak ele alınacaktır. tarafından sağlanacaktır. yapmak ve olarak ayarla
kabuk komut dili yorumlayıcısının yol adı (bkz. sh.) SHELL çevre
değişkenin değerini etkilemeyecektir. SHELL makro. Eğer SHELL içinde tanımlanır
makefile veya komut satırında belirtilirse, orijinal değerin yerini alacaktır.
SHELL makroyu etkilemez, ancak SHELL Çevre değişkeni. Diğer etkileri
tanımlarken SHELL makefile veya komut satırında uygulama tanımlıdır.

sonuç kurallar
Çıkarım kuralları aşağıdaki gibi biçimlendirilir:

hedef:
komuta
[komuta]
...

hat o yok değil başlamak ile or #

Uygulama, hedef kısmı geçerli bir hedef adıdır (bkz. Hedef
kurallar) şeklinde .s2 or .s1.s2 (nerede .s1 ve .s2 olarak verilen eklerdir
önkoşulları .SONEKLER özel hedef ve s1 ve s2 hiçbir şey içermez veya
karakterler.) Yalnızca bir tane varsa hedefte, tek bir son ektir
çıkarım kuralı. İki noktalı hedefler çift son ek çıkarım kurallarıdır. çıkarım
kurallardan önce yalnızca bir hedef olabilir .

Uygulama, makefile'ın önkoşulları belirtmemesini sağlamalıdır.
çıkarım kuralları; beyaz boşluk dışında hiçbir karakter takip etmeyecektir. içinde
ilk satır, oluşturma dışında boş kural, Aşağıda açıklanan. Önkoşullar
aşağıda açıklandığı gibi çıkarılmıştır.

Çıkarım kuralları yeniden tanımlanabilir. Mevcut bir çıkarım kuralıyla eşleşen bir hedef,
eski çıkarım kuralının üzerine yaz. içeren bir komutla boş bir kural oluşturulabilir.
sadece bir (yani, kural hala mevcuttur ve çıkarım kuralı sırasında bulunur.
arayın, ancak boş olduğundan yürütmenin bir etkisi yoktur). Boş kural da olabilir
aşağıdaki gibi biçimlendirilmiştir:

kural:;

nerede sıfır veya daha fazla karakterler ayırmak ve .

The yapmak yardımcı program, hedeflerin son eklerini ve önkoşullarını kullanarak bir
hedef güncel hale getirilebilir. Çıkarım kuralları listesi, komutları tanımlar.
uygulanmış. Varsayılan olarak, yapmak yerleşik bir çıkarım kuralları kümesi içerir. Ek kurallar
makefile içinde belirtilebilir.

özel hedef .SONEKLER önkoşulları olarak eklerin bir listesini içerir.
çıkarım kuralları tarafından kullanılabilir. Soneklerin belirtildiği sıra,
son ekler için çıkarım kurallarının kullanıldığı sıra. Yeni son ekler
belirterek geçerli listeye eklenir .SONEKLER makefile içindeki özel hedef. A
.SONEKLER ön koşulu olmayan hedef, son ekler listesini silecektir. Boş
.SONEKLER hedef ve ardından yeni .SONEKLER listenin sırasını değiştirmek için gereklidir
ekleri.

Normalde, kullanıcı her son ek için bir çıkarım kuralı sağlar. çıkarım kuralı
bir sonek ile bir hedefi güncellemek .s1 bir sonek ile bir önkoşuldan .s2 olarak belirtilir
hedef .s2.s1. Dahili makrolar, genel çıkarım kurallarını belirtmek için araçlar sağlar
(görmek İç Makrolar).

Bir hedefi güncellemek için hiçbir hedef kuralı bulunmadığında, çıkarım kuralları kontrol edilir. NS
hedefin son eki (.s1) oluşturulacak eklerin listesi ile karşılaştırılır.
the .SONEKLER özel hedefler. Eğer .s1 sonek bulunur .SONEKLER, çıkarım
kurallar, ilk olarak tanımlanan sıraya göre aranacaktır. .s2.s1 önkoşulu olan kural
dosya ($*.s2) var. Hedef bu ön koşula göre güncel değilse,
bu çıkarım kuralı için komutlar yürütülür.

Oluşturulacak hedef sonek içermiyorsa ve hedef için bir kural yoksa,
tek son ek çıkarım kuralları kontrol edilecektir. Tek son ek çıkarım kuralları
hedef adla eşleşen bir ada sahip bir dosya bulunursa hedefin nasıl oluşturulacağını tanımlayın
eklenen tek son eklerden biri ile. Tek son eki olan bir kural .s2 tanımıdır
nasıl inşa edilir hedef itibaren hedef.s2. Diğer son ek (.s1) boş olarak kabul edilir.

A ('~') yukarıdaki kurallarda geçerli dizindeki bir SCCS dosyasına atıfta bulunur. Böylece,
kural .c~.o SCCS C dili kaynak dosyasını bir nesne dosyasına dönüştürür (.o).
Çünkü s. SCCS dosyalarının bir ön ekidir, uyumlu değildir. yapmakson ek noktası
görüş. Bu nedenle, '~' herhangi bir dosya referansını bir SCCS dosyasına değiştirmenin bir yoludur
referans.

Kütüphaneler
Bir hedef veya ön koşul parantez içeriyorsa, bir
arşiv kitaplığı. İçin lib(üye.o) ifade lib arşivin adını ifade eder
kütüphane ve üye.o üye adına. Uygulama, üyenin
ile bir nesne dosyası .o son ek. İfadenin değişiklik zamanı,
arşiv kitaplığında tutulduğu şekliyle üye için değişiklik zamanı; görmek ar. .a sonek
bir arşiv kitaplığına atıfta bulunacaktır. NS .s2.a kural, bir üyeyi güncellemek için kullanılacaktır.
son eki olan bir dosyadan kitaplık .s2.

İç Makrolar
The yapmak yardımcı program, hedefte kullanılabilecek beş dahili makro tutacaktır ve
çıkarım kuralları. Bu makroların anlamını net bir şekilde tanımlamak için bazı
şartların açıklanması hedef kural, sonuç kural, hedef, ve önkoşul is
gerekli.

Hedef kurallar, kullanıcı tarafından belirli bir hedef için bir makefile içinde belirtilir. çıkarım
kurallar kullanıcı tarafından belirlenir veya yapmak-belirli bir hedef adı sınıfı için belirtilen kurallar.
Açık önkoşullar, hedef satırlarda bir makefile içinde belirtilen önkoşullardır.
Örtük ön koşullar, çıkarım kuralları oluşturulduğunda oluşturulan ön koşullardır.
kullanılmış. Çıkarım kuralları, örtük ön koşullara veya açık ön koşullara uygulanır.
makefile'de kendileri için tanımlanmış hedef kuralları olmayanlar. Hedef kuralları uygulandı
makefile içinde belirtilen hedeflere.

Makefile içindeki herhangi bir hedef güncellenmeden önce, ön koşullarının her biri (hem açık hem de
örtük) güncellenecektir. Bu, her birinin özyinelemeli olarak işlenmesiyle gerçekleştirilecektir.
ön koşul. Özyineleme üzerine, her ön koşul bir hedef haline gelecektir. Onun
önkoşullar, karşılıksız bir hedef bulunana kadar özyinelemeli olarak işlenecektir.
önkoşullar, bu noktada özyineleme durur. Özyineleme daha sonra yedeklenir,
her hedefi olduğu gibi güncellemek.

Aşağıdaki tanımlarda, kelime hedef şunlardan birine atıfta bulunur:

* Makefile'de belirtilen bir hedef

* Ne zaman hedef haline gelen makefile'de belirtilen açık bir önkoşul yapmak
özyineleme sırasında işler

* Hedef haline gelen örtük bir ön koşul yapmak özyineleme sırasında işler

Aşağıdaki tanımlarda, kelime önkoşul aşağıdakilerden birine atıfta bulunur:

* Belirli bir hedef için makefile'de belirtilen açık bir ön koşul

* Uygun bir çıkarımın bulunmasının bir sonucu olarak oluşturulan örtük bir önkoşul
hedefin son ekiyle eşleşen kural ve ilgili dosya

Beş dahili makro şunlardır:

$@ $@, geçerli hedefin tam hedef adını veya
arşiv dosya adı bir kitaplık arşiv hedefinin parçası. Her ikisi için de değerlendirilecektir.
hedef ve çıkarım kuralları.

Örneğin, .CA çıkarım kuralı, $@ güncel olmayanı temsil eder .a dosyasını
inşa edilecek. Benzer şekilde, oluşturmak için bir makefile hedef kuralında lib.a itibaren dosya.c, $@
güncelliğini yitirdiğini temsil eder lib.a.

$% $% makrosu yalnızca mevcut hedef bir arşiv kitaplığı olduğunda değerlendirilir
formun üyesi kütüphane adı(üye.o). Bu durumlarda $@,
kütüphane adı ve $% olarak değerlendirilir üye.o. $% makrosu şu şekilde değerlendirilir:
hem hedef hem de çıkarım kuralları.

Örneğin, oluşturulacak bir makefile hedef kuralında lib.a(dosya.o), $% temsil eder
dosya.otemsil eden $@ yerine lib.a.

$? $? makro, öncekinden daha yeni olan önkoşulların listesini değerlendirecektir.
mevcut hedef. Hem hedef hem de çıkarım kuralları için değerlendirilir.

Örneğin, oluşturulacak bir makefile hedef kuralında disiplin görevlisi itibaren dosya1.o, dosya2.o, ve
dosya3.o, ve nerede disiplin görevlisi açısından güncel değil dosya1.o, ama dışı-
ile ilgili tarih dosya2.o ve dosya3.o, $? temsil etmek dosya2.o ve dosya3.o.

$< Bir çıkarım kuralında, $< makrosu, varlığı dosya adını değerlendirir.
çıkarım kuralının hedef için seçilmesine izin verdi. İçinde .VARSAYILAN kural,
$< makrosu mevcut hedef adını değerlendirecektir. $< makrosunun anlamı
aksi belirtilmemiş olacaktır.

Örneğin, .CA çıkarım kuralı, $< ön koşulu temsil eder .c dosyası.

$* $* makrosu, soneki silinmiş olarak mevcut hedef adı değerlendirecektir. Bilişim Teknoloji
en azından çıkarım kuralları açısından değerlendirilir.

Örneğin, .CA çıkarım kuralı, $*.o güncel olmayanı temsil eder .o dosya
ön koşula karşılık gelen .c dosyası.

Dahili makroların her birinin alternatif bir formu vardır. ne zaman büyük harf 'D' or 'F' is
makrolardan herhangi birine eklendiğinde, anlam şu şekilde değiştirilecektir: rehber Bölüm için 'D'
ve Dosya Bölüm için 'F'. Dizin kısmı, dosyanın yol önekidir.
takip eden ; geçerli dizin için dizin bölümü ".". $ ne zaman? makro
birden fazla önkoşul dosya adı içerir, $(?D) ve $(?F) (veya ${?D} ve ${?F})
makrolar, sırasıyla dizin adı bölümleri ve dosya adı bölümleri listesine genişler.

hedef için lib(üye.o) Ve s2.a kuralına göre, dahili makrolar şu şekilde tanımlanmalıdır:

$< üye.s2

$* üye

$@ lib

$? üye.s2

$% üye.o

Varsayılan kurallar
için varsayılan kurallar yapmak aşağıdakilerle aynı olan sonuçlara ulaşacaktır:
kullanılmış. C-Dil Geliştirme Yardımcı Programlarını desteklemeyen uygulamalar
seçenek atlanabilir CC, FLAG'LAR, YACC, YFLAG'LAR, LEX, YABANCILAR, LDFLAG'lar, Ve .c, .y, ve .l
çıkarım kuralları. FORTRAN'ı desteklemeyen uygulamalar atlanabilir FC, BAYRAKLAR, Ve
.f çıkarım kuralları. Uygulamalar ek makrolar ve kurallar sağlayabilir.

ÖZEL HEDEFLERİ

.SCCS_GET: scccs $(SCCSFLAGS) almak $(SCCSGETFLAGS) $@

.SONEKLER: .o .c .y .l .a .sh .f .c~ .y~ .l~ .sh~ .f~

MAKROS

YAP=yap
AR=ar
ARFLAGLAR=−rv
YACC=yacc
YFLAG'lar=
LEX=lex
LFLAGS=
LDFLAGS=
CC=c99
CFLAGS=−O
FC=kale77
YAYINLAR=−O 1
GET=al
GFLAGS=
SCCSFLAGS=
SCCSGETFLAGS=−s

TEK SONEKK KURALLAR

.C:
$(CC) $(CFLAGS) $(LDFLAGS) −o $@ $

.F:
$(FC) $(FFLAGS) $(LDFLAGS) −o $@ $

.NS:
cp $< $@
chmod a+x $@

.c~:
$(GET) $(GFLAGS) −p $< > $*.c
$(CC) $(CFLAGS) $(LDFLAGS) −o $@ $*.c

.f~:
$(GET) $(GFLAGS) −p $< > $*.f
$(FC) $(FFLAGS) $(LDFLAGS) −o $@ $*.f

.sh~:
$(GET) $(GFLAGS) −p $< > $*.sh
kopya $*.sh $@
chmod a+x $@

ÇİFT SONEKK KURALLAR

.co:
$(CC) $(CFLAGS) −c $

.NS:
$(FC) $(FFLAGS) −c $

.yo:
$(YACC) $(YFLAGS) $
$(CC) $(CFLAGS) -c y.tab.c
rm -f y.tab.c
mv y.tab.o $@

.lo:
$(LEX) $(LFLAGS) $
$(CC) $(CFLAGS) −c lex.yy.c
rm -f lex.yy.c
mv lex.yy.o $@

.yc:
$(YACC) $(YFLAGS) $
mv y.tab.c $@

.lc:
$(LEX) $(LFLAGS) $
mv lex.yy.c $@

.c~.o:
$(GET) $(GFLAGS) −p $< > $*.c
$(CC) $(CFLAGS) −c $*.c

.f~.o:
$(GET) $(GFLAGS) −p $< > $*.f
$(FC) $(FFLAGS) −c $*.f

.y~.o:
$(GET) $(GFLAGS) −p $< > $*.y
$(YACC) $(YFLAGS) $*.y
$(CC) $(CFLAGS) -c y.tab.c
rm -f y.tab.c
mv y.tab.o $@

.l~.o:
$(GET) $(GFLAGS) −p $< > $*.l
$(LEX) $(LFLAGS) $*.l
$(CC) $(CFLAGS) −c lex.yy.c
rm -f lex.yy.c
mv lex.yy.o $@

.y~.c:
$(GET) $(GFLAGS) −p $< > $*.y
$(YACC) $(YFLAGS) $*.y
mv y.tab.c $@

.l~.c:
$(GET) $(GFLAGS) −p $< > $*.l
$(LEX) $(LFLAGS) $*.l
mv lex.yy.c $@

.CA:
$(CC) −c $(CFLAGS) $
$(AR) $(ARFLAGS) $@ $*.o
rm -f $*.o

.fa:
$(FC) −c $(FFLAGS) $
$(AR) $(ARFLAGS) $@ $*.o
rm -f $*.o

EXIT DURUMU


Zaman -q seçeneği belirtilirse, yapmak yardımcı program aşağıdakilerden biriyle çıkar
değerler:

0 Başarılı tamamlama.

1 Hedef güncel değildi.

>1 Bir hata oluştu.

Zaman -q seçeneği belirtilmemişse, yapmak yardımcı program aşağıdakilerden biriyle çıkar
değerler:

0 Başarılı tamamlama.

>0 Bir hata oluştu.

SONUÇLARI OF HATALAR


Varsayılan.

The takip etme bölümler vardır bilgilendirici.

BAŞVURUSU KULLANIM


Bir kaynak dosya varsa (örneğin ./kaynak.c) ve karşılık gelen iki SCCS dosyası vardır.
ona (./s.kaynak.c ve ./SCCS/s.source.c), XSI uyumlu sistemlerde yapmak SCCS'yi kullanır
geçerli dizindeki dosya. Ancak, kullanıcıların temel SCCS'yi kullanmaları önerilir.
araçlar (Gizem, delta, almak, vb.) veya SCC içindeki tüm kaynak dosyalar için yardımcı program
verilen dizin. Belirli bir kaynak dosya için her iki form da kullanılıyorsa, gelecekteki geliştiriciler
karıştırılması çok muhtemeldir.

Şunları belirtmek taşınabilir makefile'lerin sorumluluğundadır. .POSIX için özel hedef
yerel uzantılardan etkilenmemelerini garanti eder.

The -k ve -S seçeneklerin her ikisi de mevcuttur, böylece komut satırı arasındaki ilişki,
the MAKEFLAGLAR değişkendir ve makefile tam olarak kontrol edilebilir. Eğer k bayrak
geçti MAKEFLAGLAR ve bir komut şu şekildedir:

$(Yap) -S foo

daha sonra çocuk için varsayılan davranış geri yüklenir yapmak.

Zaman -n seçenek belirtilir, her zaman eklenir MAKEFLAGLAR. Bu özyinelemeli izin verir
yapmak -n hedef güncellemek için yapılacak tüm eylemleri görmek için kullanılacak hedef.

Yaygın tarihsel uygulama nedeniyle, bir ('#') içinde
değişken bir yorumun başlangıcı olarak, onu imkansız kılmanın talihsiz yan etkisine sahiptir.
yerleştirmek bir değişkende, böylece şöyle bir şeyi yasaklar:

FLAG'LAR = "-D COMMENT_CHAR='#'"

Birçok tarihi yapmak yardımcı programlar, bir ara ürün olduğunda çıkarım kurallarını birlikte zincirlemeyi durdurur.
hedef yok. Örneğin, bir için mümkün olabilir yapmak her ikisini de belirlemek için
.yc ve .co dönüştürmek için kullanılabilir .y a .o. Bunun yerine, bu durumda, yapmak gerektirir
bir kullanımı .yo kural.

Taşınabilir makefile sağlamanın en iyi yolu, gerekli tüm kuralları
makefile'ın kendisi. Sağlanan kurallar, yalnızca bu belgenin diğer bölümleri tarafından sağlanan özellikleri kullanır.
POSIX.1‐2008'in hacmi. Varsayılan kurallar, bu bölümde isteğe bağlı komutlar için kurallar içerir.
POSIX.1‐2008'in hacmi. Yalnızca sağlanan komutlarla ilgili kurallara ihtiyaç vardır.
bir uygulamanın varsayılan seti.

Diğer makrolarda kullanılan makrolar, ne zaman değil, yeni makro kullanıldığında değerlendirilir.
yeni makro tanımlanır. Öyleyse:

MAKRO = value1
YENİ = $(MAKRO)
MAKRO = value2

hedef:
yankı $(YENİ)

üretecekti value2 ve yok value1 beri YENİ ihtiyaç duyulana kadar genişletilmemiştir.
kaçırmak Komut satırı.

Bazı tarihi uygulamaların birbirine karıştığı bilinmektedir. hedef_adı ve makro=ad
tüm makroların herhangi birinden önce işlenmesini bekleyerek komut satırında işlenenler
hedefler işlenir. Uygun uygulamalar bunu yapmaz, ancak bazıları
geriye dönük uyumluluk desteği bazı uygulamalara dahil edilebilir.

Dosya adlarında aşağıdaki karakterler sorun çıkarabilir: '=', ':', '''', tek alıntı ve
'@'. Dosya adlarını, desen eşleştirme karakterlerini ve '''' olarak da kaçınılmalıdır.
bazı uygulamalar tarafından özel olarak kabul edilebilirler.

Çıkarım kuralları için $< ve $? benzer görünüyor. Ancak, bir örnek gösterir
küçük fark. Aşağıdakileri içeren bir makefile içinde:

foo.o: foo.h

if foo.h daha yeni foo.o, Henüz foo.c daha yaşlı foo.o, yerleşik kural yapmak için
foo.o itibaren foo.c $< ile eşit kullanılır foo.c ve $? eşittir foo.h. Eğer foo.c aynı zamanda
daha yeni foo.o, $< eşittir foo.c ve $? eşittir foo.h foo.c.

ÖRNEKLER


1. Aşağıdaki komut:

yapmak

makefile'de bulunan ilk hedefi yapar.

2. Aşağıdaki komut:

yapmak hurda

hedefi yapar hurda.

3. Aşağıdaki makefile diyor ki pgm iki dosyaya bağlıdır, ao ve ve onlar
sırayla ilgili kaynak dosyalarına bağlıdır (AC ve bc) ve ortak bir dosya
h dahil:

sayfa: ao
c99 ao -o pgm
ao: h dahil AC
c99 -c AC
Bö: h dahil bc
c99 -c bc

4. Optimize edilmiş hale getirmek için bir örnek .o dosyalarından .c dosyalar:

.co:
c99 -c -O $*.c

ya da alışveriş sepetinize tıklayın:

.co:
c99 -c -O $<

5. Arşiv arayüzünün en yaygın kullanımı aşağıdaki gibidir. Burada, varsayılmaktadır ki,
kaynak dosyaların tümü C dili kaynağıdır:

kütüphane: lib(dosya1.o) lib(dosya2.o) lib(dosya3.o)
@echo lib is şimdi aktüel

The .CA kural yapmak için kullanılır dosya1.o, dosya2.o, ve dosya3.o ve onları içine yerleştirin lib.

kaçanların tedavisi makefile boyunca karakterler tarihseldir
uygulama. Örneğin, çıkarım kuralı:

.co\
:

çalışır ve makro:

f= bar baz\
biz
a:
kaçırmak ==$f==

yankıları "== çubuk baz biz==".

Eğer $? NS:

/usr/include/stdio.h /usr/include/unistd.h foo.h

o zaman $(?D) şöyle olur:

/ usr / include / usr / include .

ve $(?F) şöyle olur:

stdio.h unistd.h foo.h

6. Yerleşik kuralların içeriği aşağıdakiler çalıştırılarak görüntülenebilir:

yapmak -p -f / Dev / null 2>/dev/null

GEREKÇESİ


The yapmak POSIX.1‐2008'in bu cildinde açıklanan yardımcı program, araçları sağlamayı amaçlamaktadır.
taşınabilir kaynak kodunu bir bilgisayarda çalıştırılabilen yürütülebilir dosyalara dönüştürmek için
POSIX.1‐2008 uyumlu sistem. System V'de bulunan en yaygın özellikleri yansıtır.
ve BSD yapmaks.

Tarihsel olarak, yapmak fayda, satıcı için özellikle verimli bir zemin olmuştur ve
araştırma kuruluşuna özgü sözdizimi değişiklikleri ve uzantıları. Örnekler şunları içerir:

* Paralel yürütmeyi destekleyen sözdizimi (çeşitli çok işlemcili satıcılardan,
GNU ve diğerleri)

* Hedefleri ve önkoşullarını ayıran ek "operatörler" (Sistem V, BSD,
ve diğerleri)

* Dizeleri içeren komut satırlarının belirtilmesi "${MAKE}" ve "$( YAPIN)" vardır
yürütüldüğünde -n seçenek belirtildi (GNU ve System V)

* Kitaplıklara atıfta bulunurken dahili makroların anlamındaki değişiklikler (BSD ve
diğerleri)

* Hedefin tüm komut satırları için kabuğun tek bir örneğini kullanma (BSD
ve diğerleri)

* İzin vermek karakterlerin yanı sıra komut satırlarını sınırlandırmak için karakterler (BSD)

* C önişlemci stili ``include'' ve ``ifdef'' yapıları ekleme (System V, GNU, BSD,
ve diğerleri)

* Komut satırlarının uzaktan yürütülmesi (Sprite ve diğerleri)

* Ek özel hedeflerin belirtilmesi (BSD, System V ve diğerleri)

Ek olarak, birçok satıcı ve araştırma kuruluşu, temel kavramları yeniden düşünmüştür.
yapmak, büyük ölçüde genişletilmiş ve tamamen yeni sözdizimleri yaratıyor. bunların her biri
sürümleri yapmak farklı bir kullanıcı topluluğunun ihtiyaçlarını karşılar; mantıksız
POSIX.1‐2008'in bu cildinin uyumsuz (ve
muhtemelen daha düşük) böyle bir topluluk için tarihsel pratikten.

Benzer durumlarda, endüstri yeterince uyumsuz formatlara sahip olduğunda
onları uzlaşmaz kılmak için, POSIX.1‐2008'in bu cildi aşağıdakilerden birini veya her ikisini de izlemiştir.
iki eylem planı. Komutlar yeniden adlandırıldı (cksum, kaçırmak, ve pax) ve/veya komut
İstenen davranışı seçmek için satır seçenekleri sağlanmıştır (grep, od, ve pax).

Çünkü belirtilen sözdizimi yapmak fayda, genel olarak,
hemen hemen tüm sürümleri tarafından kabul edilen sözdizimleri yapmakkarşı olmasına karar verildi.
adını değiştirmek için verimli. Makefile'ın kendisi de temel bir birim olduğundan,
taşınabilirlik, gibi yeni bir seçenek mektubu rezerve etmek tamamen etkili olmayacaktır.
yapmak -P, taşınabilir davranışı elde etmek için. Bu nedenle özel hedef .POSIX eklendi
kullanıcıların "standart" davranışı belirlemelerine izin vererek makefile'a aktarır. Bu özel hedef,
uzantıları engellemez yapmak yardımcı olur ve bu tür uzantıların kullanılmasını engellemez.
hedefi belirten makefile tarafından kullanılır; bununla birlikte, herhangi bir uzantının
önceden geçerli sözdiziminin davranışını değiştirebilecek şekilde uygulanıyor; bu tür uzantılar
komut satırı seçenekleri veya yeni özel hedefler aracılığıyla kontrol edilmelidir. üzerine düşen
belirtmek için taşınabilir makefiles .POSIX garanti altına almak için özel hedef
yerel uzantılardan etkilenmez.

taşınabilir versiyonu yapmak bu referans sayfasında açıklanan
son teknoloji yazılım oluşturma aracı ve bu nedenle, bazıları daha yeni ve daha öncü
özellikler dahil edilmemiştir. Taşınabilir olanı tanımlamak için bir girişimde bulunuldu.
makefile, rahatsız etmedikleri sürece bu tür uzantıları engellemeyecek şekilde
burada açıklanan taşınabilir davranış.

Zaman -n seçenek belirtilir, her zaman eklenir MAKEFLAGLAR. Bu özyinelemeli izin verir
yapmak -n hedef güncellemek için yapılacak tüm eylemleri görmek için kullanılacak hedef.

tanımı MAKEFLAGLAR hem System V harf dizisine hem de BSD komutuna izin verir
çizgi biçimleri. İki format, uygulamaların
her ikisini de belirsizlik olmadan destekleyin.

İlk teklifler, "alıntılanmamış" bir başlangıcı olarak kabul edildi
Yorum. NS yapmak yardımcı program alıntılara hiç dikkat etmez. A başlar
çevresinden bağımsız olarak yorum yapın.

Ek olarak ``diğer uygulama tanımlı yol adları da denenebilir'' ile ilgili metin
./make dosyası ve ./Make dosyası gibi uzantılara izin vermektir SCCS/s.Makefile ve diğeri
varyasyonlar. Uygulama tanımlı bir gereklilik haline getirildi (belirtilmemiş
davranışı) beklenmedik bir şeyi seçebilecek şaşırtıcı uygulamaları vurgulamak için
sevmek /etc/Make dosyası. XSI uyumlu sistemler de deneyin ./s.make dosyası, SCCS/s.make dosyası,
./s.Makefile, ve SCCS/s.Makefile.

İlk teklifler makroyu içeriyordu NPROC bunu belirtmenin bir yolu olarak yapmak kullanmalı n
gerekli işleri yapmak için süreçler. Bu özellik birçokları için değerli bir uzantı olsa da
sistemlerde yaygın bir kullanım değildir ve dosya oluşturmak için önemsiz olmayan diğer uzantıları gerektirebilir.
sözdizimi. Bu uzantı, POSIX.1‐2008'in bu cildi için gerekli değildir, ancak
uyumlu bir uzantı olarak sağlanır. makro PARALEL bazı tarihi sistemler tarafından kullanılır
temelde aynı anlama sahip (ancak ortak bir sistem sınırı olan bir ad kullanmadan
değer). Uygulayıcıların mevcut kullanımını tanımaları önerilir. NPROC ve / veya
PARALEL uzantıları olarak yapmak.

Varsayılan kurallar System V'e dayanmaktadır. CC = değer şudur c99 yerine cc
çünkü POSIX.1‐2008'in bu hacmi, adı verilen yardımcı programı standartlaştırmaz. cc. Böylece,
her uygun uygulamanın tanımlanması gerekli olacaktır CC =c99 koşmayı beklemek. Orada
makefile'ın "tercih edilen" derleyiciye ulaşabileceği umuduyla sağlanan hiçbir avantaj yok
çünkü bunun çalışması garanti edilemez. Ayrıca, taşınabilir makescript yalnızca
kullan c99 seçenekleri, komut dosyasının yapabilecekleri açısından hiçbir avantaj sağlanmaz. Bu
olup olmadığı konusunda bir uygulama kalitesi sorunu c99 kadar değerlidir cc.

The -d için seçenek yapmak hata ayıklama bilgisi üretmek için sıklıkla kullanılır, ancak
POSIX.1‐2008'in bu cildine eklemek için uygulama tanımlı.

The -p seçenek geçmedi MAKEFLAGLAR çoğu tarihsel uygulamada ve değişiklik
bu, taşınabilirliği yeterince artırmadan birçok uygulamanın bozulmasına neden olur.

a ile başlayan komutlar ('+') çalıştırılsa bile -n seçenektir
sunmak. GNU sürümüne göre yapmak, davranışı -n ne zaman önek
karşılaşılan durumlar için geçerli olacak şekilde genişletildi -q ve -t ilave olarak. Ancak, Sistem V
ile komut yürütmeyi zorlama kuralı -n bir hedefin komut satırı içerdiğinde
dizelerden herhangi biri "$( YAPIN)" or "${MAKE}" benimsenmemiştir. Bu işlevsellik
erken tekliflerde ortaya çıktı, ancak bu yaklaşımın tehlikesine işaret edildi.
bir makefile parçasının aşağıdaki örneği:

alt dizin:
cd alt dizin; rm all_the_files; $(Yap)

Bu durumda System V davranışının kaybı, sağlanan güvenlikle iyi dengelenmiştir.
Bu durumun farkında olmayan diğer makefiles. Her durumda, komut satırı
önek istenen işlevselliği sağlayabilir.

Çift hedef kural biçiminde daha fazla izin vermek için BSD sistemlerinde desteklenir
kendisiyle ilişkilendirilmiş komutlara sahip olmak için aynı hedef adını içeren birden fazla hedef satır.
Bu, SVID veya XPG3'te açıklanan işlevsellik olmadığından,
uzatma, ancak zorunlu değil.

Varsayılan kurallar, yerleşik kuralların aşağıdakiler olacağını belirten metinle sağlanır.
listelenen set kullanılmış gibi. Amaç, uygulamaların
kuralları değiştirmeden kullanın, ancak bunları etkilemeyen şekillerde değiştirmelerine izin verilecektir.
birincil davranış.

Taşınabilir makefile sağlamanın en iyi yolu, gerekli tüm kuralları
makefile'ın kendisi. Sağlanan kurallar, yalnızca bu belgenin diğer bölümleri tarafından sağlanan özellikleri kullanır.
POSIX.1‐2008'in hacmi. Varsayılan kurallar, bu bölümde isteğe bağlı komutlar için kurallar içerir.
POSIX.1‐2008'in hacmi. Yalnızca sağlanan komutlarla ilgili kurallara ihtiyaç vardır.
bir uygulamanın varsayılan kümesi.

Tartışma noktalarından biri, varsayılan kurallar listesinin bu ciltten çıkarılıp çıkarılmayacağıydı.
POSIX.1‐2008. Kolaylık sağlarlar, ancak uygulamaların taşınabilirliğini artırmazlar.
Asıl avantaj, yazmak isteyen kullanıcıların taşınabilirliğidir. yapmak komuta ve sahip
bir komuttan derleme komut.c dosyası.

Tarihsel YAPRAK özellik atlanmıştır. Bazı uygulamalarda izin vermek için kullanılır.
kullanıcı çalıştırmak için kullanılacak kabuğu geçersiz kılar yapmak komutlar. Bu kafa karıştırıcıydı; için
taşınabilir yapmak, kabuk makefile yazarı tarafından seçilmeli veya üzerinde belirtilmelidir. yapmak
komut satırı ve çalışan bir kullanıcı tarafından değil yapmak.

The yapmak Çoğu tarihsel uygulamada yardımcı programlar, bir sistemin ön koşullarını işler.
soldan sağa sırayla hedefleyin ve makefile biçimi bunu gerektirir. destekler
üreten birçok makefile'de kullanılan standart deyim yacc programlar; Örneğin:

foo: y.tab.o lex.o ana.o
$(CC) $(CFLAGS) -o $@ t.tab.o lex.o ana.o

Bu örnekte, eğer yapmak herhangi bir keyfi sipariş seçti, lex.o ile yapılmayabilir.
doğru y.tab.h. Bu ilişkiyi ifade etmenin daha iyi yolları olsa da,
Tarihsel olarak yaygın olarak kullanılır. Önkoşulları paralel olarak güncellemek isteyen uygulamalar
için açık bir uzantı gerektirmeli yapmak veya bunu başarmak için makefile biçimi,
daha önce tarif edilmiştir.

Hedef kurallar için yeni bir giriş belirleme algoritması kısmen belirtilmemiştir. Biraz
tarihsel yapmaks komut koleksiyonunda boş, boş veya yorum satırlarına izin verir
önde gelen tarafından işaretlenmiş karakterler. Uyumlu bir makefile, her komutun
bir ile başlar , ancak uygulamalar boş, boş ve yorumları yoksaymakta serbesttir
satırları yeni bir girişin başlangıcını tetiklemeden.

ASENKRON OLAYLAR bölümü, SIGTERM ve SIGHUP'a sahip olmanın yanı sıra daha fazlasını içerir.
geleneksel SIGINT ve SIGQUIT, aksi belirtilmedikçe mevcut hedefi kaldırın.
SIGTERM ve SIGHUP, tarihsel olarak temizlenen diğer yardımcı yardımcı programlara eklendi
bu sinyaller sonucunda çalışmalarını hızlandırır. Ne zaman yapmak dışında herhangi bir sinyal alır
SIGQUIT, aldığı sinyali kendisine yeniden göndermesi gerekiyor, böylece bir
sinyali yansıtan durum. SIGQUIT'ten elde edilen sonuçlar kısmen belirtilmemiş
çünkü, yaratan sistemlerde çekirdek SIGQUIT'in alınması üzerine dosyalar, çekirdek itibaren yapmak
ile çelişecek çekirdek SIGQUIT çalıştırıldığında çalışan komuttan dosya
ulaşmış. Asıl endişe, hasarlı dosyaların şu durumlarda güncel görünmesini önlemekti. yapmak
tekrar çalıştırılır.

The .DEĞERLİ özel hedef, küresel olarak tüm hedefleri etkileyecek şekilde genişletildi (hayır belirterek
önkoşullar). NS .GÖRMEZDEN GELMEK ve .SESSİZ izin vermek için özel hedefler genişletildi
ön koşullar; bazı durumlarda hataları kapatabilmek için daha faydalı olduğuna karar verildi
veya tüm makefile için değil, bir hedef listesi için yankılanıyor. Bu uzantılar yapmak in
Sistem V, BSD'deki tarihi uygulamalara uyacak şekilde yapıldı yapmak.

Makrolar, çalıştırılacak komutların ortamına aktarılmaz. Bu asla böyle olmadı
herhangi bir tarihsel yapmak ve ciddi sonuçları olacaktır. Ortam aynı
çevre yapmak bunun haricinde MAKEFLAGLAR ve üzerinde tanımlanan makrolar yapmak komut satırı
eklendi.

Bazı uygulamalar kullanmaz sistem() tarafından gerektiği gibi tüm komut satırları için
taşınabilir makefile formatı; performans geliştirmesi olarak, kabuksuz satırları seçerler
tarafından doğrudan yürütme için meta karakterler yürütmek(). öyle bir şart yok sistem() olmak
özel olarak kullanılır, ancak yalnızca aynı sonuçlara ulaşılır. meta karakterler
genellikle doğrudan atlamak için kullanılır yürütmek() yürütme aşağıdakilerden herhangi biri olmuştur:

= | ^ ( ) ; & < > * ? [ ] : $ ` ' " \ \n

Bazı gelişmiş sürümlerinde varsayılan yapmak için tüm komut satırlarını gruplamaktır.
tek bir kabuk çağrısı kullanarak bunları hedefleyin ve yürütün; System V yöntemi geçmektir
her satır ayrı ayrı ayrı bir kabuğa. Tek kabuk yöntemi şu avantajlara sahiptir:
performans ve birçok devam eden hat için bir gerekliliğin olmaması. Ancak, dönüştürme
bu daha yeni yöntem, birçok tarihsel makefile ile taşınabilirlik sorunlarına neden oldu, bu nedenle
POSIX makefile ile davranışın System V ile aynı olduğu belirtildi.
özel hedef önerdi .ON Kabuğu için bir uygulama uzantısı olarak kullanılabilir
bir hedef veya hedef grubu için tek kabuklu gruplandırmayı elde edin.

Acemi kullanıcılar yapmak komutları bir ile başlatmak için tarihsel ihtiyaçla ilgili zorluk yaşadı
. Aradaki farkları ayırt etmek genellikle zor olduğu için ve
terminallerdeki veya basılı listelerdeki karakterler, kafa karıştırıcı hatalar ortaya çıkabilir. Erken tekliflerde,
yönlendirmeye izin vererek bu sorunu düzeltmek için bir girişimde bulunuldu. bunun yerine karakterler
ile ilgili karakterler. Bununla birlikte, uygulayıcılar, gizli olarak başarısız olan birçok makefile bildirdiler.
Bu değişikliği takip eden yollar ve bir yapmak kesinlikle olabilir
makro ve komut satırları arasında ayrım yapın. kapsamlı bir tarihsel uygulama vardır.
liderliğe izin vermek makro tanımlarından önceki karakterler. Makro satırlarını zorlamak
Sütun 1, bazı makefile'ler için geriye dönük uyumluluk açısından önemli bir sorun olacaktır.
Bu nedenle, tarihi uygulama restore edildi.

Dahil etme hatlarının farklı şekillerde ele alınmasında önemli farklılıklar vardır.
uygulamalar. Bununla birlikte, standardın yapabilmesi için yeterli ortaklık vardır.
özelliğin taşınabilir olarak kullanılmasına izin veren minimum gereksinimler kümesini belirtin. Bilinen
varyasyonlar, açıklamada açıkça belirtilmemiş davranış olarak adlandırılmıştır.

System V dinamik bağımlılık özelliği dahil edilmedi. Şunları destekleyecektir:

kedi: [e-posta korumalı]

genişleyecekti;

kedi: kedi.c

Bu özellik yalnızca System V'in yeni sürümünde mevcuttur. yapmak ve yararlı olsa da, içinde değil
geniş kullanım. Bu, makroların ön koşullar için iki kez genişletildiği anlamına gelir: bir kez makefile'de
ayrıştırma zamanı ve hedef güncelleme zamanında bir kez.

POSIX'e metarules eklenmesine dikkat edildi yapmak. Bu %.Ö: %.C
aynı .co:. Bu oldukça kullanışlıdır ve bazı satıcılardan alınabilir, ancak
bunda çok fazla değişikliğe neden yapmak desteklemek. Kural zincirlemeyi getirirdi ve
yeni ikame kuralları. Ancak, hedef adları için kurallar,
'%' ve '''' karakterler. Bunlar geleneksel olarak metarules uygulamak ve alıntı yapmak için kullanılır.
sırasıyla hedef adları. Uygulayıcıların bu karakterleri kullanmaları şiddetle tavsiye edilir
sadece bu amaçlar için.

Son ek sınırlayıcı karakterini bir herhangi birine
karakter. Daha yeni sürümlerde metarules özelliği yapmaks bu sorunu daha genel bir şekilde çözer.
POSIX.1‐2008'in bu cildi, daha muhafazakar tarihsel tanımla kalıyor.

için standart çıktı formatı -p seçenek açıklanmadı çünkü öncelikle bir
hata ayıklama seçeneği ve biçim genellikle programlar için yararlı olmadığı için. tarihsel olarak
uygulamalarda çıktı, makefile oluşturmada kullanım için uygun değildir. NS -p biçim
tarihsel uygulamalar arasında değişken olmuştur. Bu nedenle, tanımı -p oldu
yalnızca elde etmek için tutarlı bir şekilde adlandırılmış bir seçenek sağlamak için yapmak komut dosyası hata ayıklaması
bilgiler.

Bazı tarihsel uygulamalar, son ek listesini şu şekilde temizlemedi: -r.

Uygulamalar, bazı tarihsel uygulamaların birbirine karıştığının farkında olmalıdır.
hedef_adı ve makro=değer komut satırında işlenenler, tüm makroların
hedeflerden herhangi biri ele alınmadan önce işlenir. Uygun uygulamalar yapmaz
bu, ancak bazı geriye dönük uyumluluk desteği garanti edilebilir.

Boş çıkarım kuralları bir ile belirtilir hepsini atlamak yerine komut
erken bir teklifte açıklandığı gibi komutlar. İkinci durumun geleneksel bir anlamı yoktur.
ve GNU'daki gibi uygulama uzantıları için ayrılmıştır yapmak.

GELECEK TARİFİ


Yok.

onworks.net hizmetlerini kullanarak makeposix'i çevrimiçi kullanın


Ücretsiz Sunucular ve İş İstasyonları

Windows ve Linux uygulamalarını indirin

Linux komutları

Ad