Si belirli dosyalar güncellendiğinde bir görevi çalıştırmak veya güncellemek istiyorummake yardımcı programı kullanışlı olabilir. Make yardımcı programı yürütülecek bir dizi görevi tanımlayan bir dosya, makefile gerektirir.
Bir programı kaynak koddan derlemek için make'i kullanmış olabileceğinizden, bu isim çoğunuza tanıdık gelecektir. Çoğu açık kaynak projesi, make install kullanılarak kurulabilen son bir yürütülebilir ikili dosyayı derlemek için make kullanır.
bu sefer bu tür dosyaların Linux içinde nasıl çalıştığını anlayalım.
Makefile dosyası Temel olarak dört temel ifade türüne ayrılır:
- Yorumlar
- Değişkenler.
- Açık kurallar.
- Örtük kurallar.
Açık Kurallar, hangi dosyaların diğer dosyalara bağlı olduğunu ve belirli bir dosyayı derlemek için gereken komutları belirtir.
Örtük olanlar açık olanlara benzer, ancak farkla çalıştırılacak komutları belirtirler, ancak bunun yerine make hangi komutların çalıştırılacağını belirlemek için dosya uzantılarını kullanır.
Bu örnekte bu son ikisini kullanmayacağız, Sadece terminalde klasik "Merhaba Dünya" yı yazdırarak başlayacağız.
Bunun için istediğiniz isimle boş bir dizin oluşturacağız.
Bu durumda buna "örnek yapma" diyelim ve bunun içinde aşağıdaki içeriğe sahip bir makefile oluşturacağız:
#este es un comentario, todo lo que este dentro de esta línea simplemente es ignorado
esta_es_una_variable:
echo "Hola Mundo"
Şimdi dizinin içine make yazarak dosyayı çalıştırın, çıktı şöyle olacaktır:
make
echo "Hola Mundo"
Hola Mundo
Makefile çalıştırıldığında görebileceğiniz gibi, echo "Merhaba Dünya" komutu ve ardından gerçek komutun çıktısı görüntülenir. Genellikle bunu istemiyoruz. Make komutunu çalıştırdığınızda bu çıktıyı bastırmak için, echo'dan önce bir "@" eklemeniz yeterlidir:
Bunun pratik örneği:
#este es un comentario, todo lo que este dentro de esta línea simplemente es ignorado
esta_es_una_variable:
@echo "Hola Mundo"
Şimdi makefile'ı tekrar çalıştırmaya devam edebiliriz. Çıktı sadece şunu göstermelidir:
make
Hola Mundo
Bu oldukça basit. Ama bildiğiniz gibi, makefile'lar pek çok şey içerir ve bunların izlenecek dizilerini gösterirler.
Bu dosyaya bazı basit diziler ekleyebiliriz.
Ne yapacağımız dosyayı aşağıdaki gibi düzenlemek:
#este es un comentario, todo lo que este dentro de esta línea simplemente es ignorado
esta_es_una_variable:
@echo "Hola Mundo"
crear_un_archivo_nuevo:
@ echo "Estoy creando un archivo.txt ..."
touch archivo.txt
Makefile'ı yeniden çalıştırırken, bu sadece ilk amacı gerçekleştirecektir. Bunun nedeni, makefile'daki yalnızca ilk hedefin varsayılan hedef olmasıdır.
Sırayla koşmak için dosya içinde "tümü" ile belirtilmesi gerekir. Diğer hedefleri çağırmak "oranın" sorumluluğundadır.
all: esta_es_una_variable crear_un_archivo_nuevo
#este es un comentario, todo lo que este dentro de esta línea simplemente es ignorado
esta_es_una_variable:
@echo "Hola Mundo"
crear_un_archivo_nuevo:
@ echo "Estoy creando un archivo.txt ..."
touch archivo.txt
Make'i tekrar yürütmeye devam edebilirsiniz ve dizinin içinde adlı bir dosyanın olduğunu göreceksiniz. "Dosya.txt".
Aynı şekilde makefile dosyası içinde bir hedefi yürütmek mümkündür, bu genellikle yaygın olarak kullanılmaktadır.
Dosyamızı değiştireceğiz ve sonuna aşağıdakileri ekleyeceğiz:
clean:
@ echo "Voy a eliminar el archivo txt creado”
rm archivo*.txt
Make'i yeniden çalıştırabilirsiniz ve txt dosyasını yeniden oluşturacaktır. Göreceğiniz gibi, önceki ile aynı şeyi yapacak. Ama şimdi makefile dosyasının içindeki hedefi çalıştıracağız.
Bunu şununla yapıyoruz:
make clean
Bununla, dosya oluşturma hakkında oldukça basit bir şey öğrenebilir ve bazı şeyleri otomatikleştirmek istiyorsak bunların nasıl oldukça yararlı olabileceğini öğrenebiliriz.
Açıkçası daha büyük ve daha karmaşık bir dosya oluşturabilirsiniz, ancak bu, bunun nasıl çalıştığını öğrenen yeni başlayanlar (kendimi dahil ediyorum) için yalnızca bir örnektir.
Çok ilginç makale. Bir soru ... "değişkenler" dediğiniz şey, işlevler veya yöntemler olmayacak mı?
Aslında, evet dostum, düzeltme için teşekkürler.
Şerefe! 🙂
Mükemmel, umarım kazmaya devam edersin.
Ne bir şey ne de diğeri https://www.gnu.org/software/make/manual/make.html, "hedefler"
kurallar
Umarım, bu "avantajlar ve işlemlerin" nasıl duyurulduğu gibi hiç kimsenin aynı tutkuyla açıklayamadığı, Linux'un günlük çalıştırılmasına ilişkin "her yerde ve temel" gibi şeyleri açıklamaya devam ederler.