İçeriğe atla

Make

Vikipedi, özgür ansiklopedi
22.00, 21 Kasım 2015 tarihinde Vikiçizer (mesaj | katkılar) tarafından oluşturulmuş 16299062 numaralı sürüm (Kategori:GNU Projesi yazılımları eklendi (HotCat))

Make dosyaları bir formdan diğerini çevirme işlemini otomatikleştiren bir araçtır. Bu işlemi, çevrilecek programların ihtiyaç duyacağı diğer programları kontrol ettikten sonra gerekli programları çalıştırarak çevirme işlemini gerçekleştirir. Çevrilen programı çalıştırmak için ihtiyaç duyulan diğer programlara bağımlılıklar denir. Unix/Linux tabanlı işletim sistemlerinde, kaynak kodu (source code) nesne koduna (object code) derlerken ve nesne kodlarını çalıştırılabilir (executable) ve kütüphane (library) dosyalarına bağlarken (linking) sıkılıkla kullanılır. Bağımlılık grafiğini çıkarmak için "Makefile" ismi verilen bir dosya kullanır ve shell'e (kabuk) geçirilmek üzere kullanılan betikleri (script) oluşturur.

Makefile Yapısı

Makefile bir grup dosyaya bağlı olarak, bir dosyayı ya da kural adını tanımlayan metin satırlarından oluşur. Çıktı dosyaları bağlı oldukları kaynak dosyalarına ve kaynak dosyalarda içinden dahil edildikleri dosyalara göre işaretlenirler. Her bir bağımlılık listelendikten sonra, tab ile boşluk bırakılmış satır dizileri girdi dosyalarının çıktı dosyalarına nasıl dönüştürüleceğini tanımlar (eğer girdi dosyaları çıktılardan daha önce değişikliğe uğramış ise). Bu tip tanımlamalara "build scripts" adı verilir ve hedef dosyayı oluşturması için shell' e geçirilir. Basit bir Makefile yapısı aşağıdaki gibidir.

Makefile çeşitli değişken tanımları içerebildiği gibi diğer Makefile' lardan alıntıda yapabilir. Makefile içerisindeki değişkenler komut satırından geçirilecek olan değerlerle değiştirilebilir. Bu kullanıcıya build script' ler için farklı davranışlar tanımlayabilmesini sağlar ve programları diğerleri arasından nasıl çağırabileceğini belirler. Örneğin, Makefile lardaki "CC" değişkeni sıklıkla C derleyicisine referans için kullanılır ve kullanıcı farklı bir derleyiciyi kullanmak maksadıyla tanımlayabilir.