GNU Yap

GNU Yap

Bilgi
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 .

Özgünlükler

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.

Değişkenlerin değeri

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 := toto

eşdeğerdir:

y := titi tata x := toto

Baş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 .

Genel kurallar

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.c

ama çiftler değil:

fifi.o fifi.c goto.o goto.c

Fonksiyonlar

GNU 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.

GNU Guile

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 .

Notlar ve referanslar

  1. (inç) Paul Smith GNU make 4.3 çıktı!  " ,19 Ocak 2020(erişim tarihi 20 Şubat 2020 )
  2. merhaba kendisi bir değişken olarak tanımlanmadığı için sabit bir dizge olarak değerlendirilir
  3. Bu elbette burada sadece bir ders kitabı vakası
  4. Örtük kurallar yalnızca genel önceden tanımlanmış kurallardır
  5. Hariç veya koşullu belirli bölümlerinin incelenmesini içermelidir verir koşullu kod ile karıştırılmamalıdır makefile
  6. (in) "  GNU Make 4.0 Yeni Özellikler Getiriyor, Guile ile Genişliyor  " phoronix.com'da ,Ekim 9, 2013( 23 Ekim 2014'te erişildi )  ;

Dış bağlantılar