Yaratıcı | Richard Stallman ve Roland McGrath |
---|---|
Tarafından geliştirildi | GNU Projesi |
Son sürüm | 4.3 (19 Ocak 2020) |
Depozito | git.savannah.gnu.org/cgit/make.git |
Yazılmış | VS |
İşletim sistemi | GNU ve GNU / Linux |
Çevre | GNU / Linux |
Tür | Üretim motoru |
Lisans | GPLv3 |
İnternet sitesi | www.gnu.org/s/make/ |
GNU yapmak varyantı olan GNU üretim motoru yapmak . Gmake, Richard Stallman ve Roland McGrath arasındaki işbirliğinin bir sonucudur .
Aşağıda belirtilen özelliklerden bazıları, diğer varyantlardan miras alınmış veya hatta başka varyantlar tarafından taklit edilmiş, ancak aynı zamanda her iki tarafta da bağımsız olarak icat edilmiş olabileceği sürece, kesinlikle GNU'ya özgü olmayabilir.
Mesele (in) kullanım kılavuzunu değiştirmek değil, en göze çarpan unsurları vurgulamaktır.
A değeri ise değişken geleneksel olarak tedavi edilir makro çok yinelemeli olarak kullanımı GNU yapmak değeri tanımının zamanda sabittir, değişken tanımı kullanılması da mümkündür.
Geleneksel örnek:
titi = $(tata) tata = $(toto) toto = salut all:;echo $(titi)sonra "Merhaba" görüntüler titi değerlendirilmiştir tata değerlendirilen sırayla toto nihayet değerlendirildi hi .
Bu birinci aroma diğer varyantları bilinen tek marka . Bunun avantajları vardır, özellikle etkili nihai değerin yalnızca son durumda belirlenmesine izin verir. Ayrıca bildirimlerin sırasına göre esneklik sağlar, bu nedenle yukarıdaki örnekte sonuç ilk üç bildirimin sırasından bağımsızdır.
Diğer yandan bu ilk lezzetin iki dezavantajı vardır. En azından, değişkenlerin her kullanıldıklarında (değerleri sabit kalsa bile) sistematik olarak yeniden değerlendirilmeleri, bu kesin durumda gereksiz bir yük oluşturmasıdır. Diğeri, genel durumda, aşağıdaki örnekte olduğu gibi yeniden tanımlanmasına izin vermez:
titi = jour toto = bon titi = $(toto)${titi}Bu durumda, üçüncü satır , GNU make tarafından bir hata olarak reddedilecek olan yinelemeli bir titi tanımına götürür .
GNU make ile mümkün olan ikinci lezzet aşağıdaki örnekle gösterilmektedir:
x := titi y := $(x) tata x := totoeşdeğerdir:
y := titi tata x := totoBaşka bir deyişle, bu ikinci tat değişkenlere, dolayısıyla örneğin C dili gibi diğer programlama dillerinin çoğunun değişkenlerine özdeş bir davranış tanımlamaktadır .
Make, açık ve örtük veya genel kurallar tanımlamanıza olanak tanır.
Make değişkenlerinin çoğunda , bu tür ifadeler basit son ek çiftlerine indirgenmiştir . Bir hedef dosya adı için aynı köke sahip bir kaynak dosya olduğunda ve hedefin sonekini kaynağın sonekine bağlayan örtük bir kural varsa, kural uygulanabilir. Misal:
.c.o: $(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@ $<Herhangi bir ".o" sonek dosyasının ".c" sonek dosyasından nasıl örtük olarak üretilebileceğini açıklar
GNU make, biraz daha karmaşık olan ve sözdizimi açık kurallarınkine benzeyen düzenli ifadelere izin verir. Misal:
%.o: %.c toto.h $(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@ $<Bu örnekte, bu şekilde tanımlanan genel kuralın ".o" ve ".c" soneklerini bağlamakla sınırlı olmadığı, aynı zamanda ek bir bağımlılık empoze etmeyi veya belirtmeyi (bakış açısına bağlı olarak) mümkün kıldığı not edilecektir. bir dosya. özel: "toto.h" (örnekte). Bu sözdiziminde, kaynak ve hedef arasında ortak olan kalıbı (hatta kalıbı ) bulan "%" karakteridir .
Bu sözdizimi, tek son ek ile sınırlı kalmamayı mümkün kılar. Yani örnekte:
f%.o: g%.c $(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@ $<Ayrıca, genel kuralın yalnızca dosya adı "f" ile başlayan ".o" sonekine sahip hedeflere ve dosya adı "g" ile başlayan ve aynı şeyi paylaşan ".c" sonekine sahip bir kaynak için geçerli olacağını da kabul ediyoruz. "%" Desen. Bu nedenle, çiftler yukarıda tanımlanan genel kuraldan etkilenecektir:
fifi.o gifi.c foto.o goto.cama çiftler değil:
fifi.o fifi.c goto.o goto.cGNU make, değişken bir referansın bulunabileceği her yerde kullanılabilen kapsamlı bir işlevler kümesi sunar . Değişken başvuruya çok benzeyen bir işlevi çağırmanın sözdizimi genel biçimdedir:
${fonction arguments}Mevcut işlevler arasında aşağıdaki kategorileri belirleyebiliriz:
GNU make ayrıca kullanıcının, değeri diğer işlevlerin ve değişkenlerin (biçimsel veya gerçek) bir birleşimi olan bir değişkenin (işlevin adı) tanımı aracılığıyla çarpanlarına ayırarak kendi işlevlerini tanımlamasına izin verir.
Guile desteği , 4.0 sürümünden beri sağlanmaktadır. İlk yazılım tuğla muhtemelen olacak yararlanmaya Guix , bir salt işlevsel paket yöneticisi için tasarlanmış GNU .