Makefiles ile ilgili bazı öğreticiler okudum, ancak benim için "tümü" nün ne anlama geldiği ve ne işe yaradığı hala net değil.
Herhangi bir fikir?
Makefiles ile ilgili bazı öğreticiler okudum, ancak benim için "tümü" nün ne anlama geldiği ve ne işe yaradığı hala net değil.
Herhangi bir fikir?
Yanıtlar:
Makefile'ın anladığı gibi bir yapı birçok hedeften oluşur. Örneğin, bir proje oluşturmak için ihtiyacınız olabilir
Bu iş akışını makefile ile uyguladıysanız, her bir hedefi ayrı ayrı yapabilirsiniz. Örneğin, yazdıysanız
make file1.o
sadece gerekirse bu dosyayı oluşturur.
Adı all
sabit değil. Bu sadece geleneksel bir isim; all
target, eğer onu çağırırsanız, make'in tam bir yapı oluşturmak için gereken her şeyi yapacağını belirtir . Bu genellikle herhangi bir dosya oluşturmayan, yalnızca diğer dosyalara bağlı olan kukla bir hedeftir. Yukarıdaki örnek için, tüm gerekli olanı oluşturmak yürütülebilir dosyalar oluşturmaktır, diğer dosyalar bağımlılık olarak çekilir. Makefile'da şöyle görünür:
all: executable1 executable2
all
target genellikle makefile'da ilktir, çünkü sadece make
komut satırında hedefi belirtmeden yazarsanız , ilk hedefi oluşturur. Ve olmasını bekliyorsunuz all
.
all
genellikle aynı zamanda bir .PHONY
hedeftir. Buradan daha fazlasını öğrenin .
GNU Make için manuel için açık bir tanım getirmekte all
onun içinde standart hedeflerin listesinden .
Makefile'ın yazarı bu kuralı takip ediyorsa hedef all
şunları yapmalıdır:
make
aynı şeyi yapmalı make all
.1'e ulaşmak all
, tipik olarak .PHONY
, tüm programı oluşturan çalıştırılabilir dosyalara bağlı bir hedef olarak tanımlanır :
.PHONY : all
all : executable
2'ye ulaşmak all
, ya yapım dosyasında tanımlanan ilk hedef olmalı ya da varsayılan hedef olarak atanmalıdır:
.DEFAULT_GOAL := all
Özel bir şey ifade ettiğinden emin değilim. Bu sadece bir 'hepsi' kuralı sağladığınız bir konvansiyondur ve genellikle tüm projeyi inşa etmek için gereken tüm alt hedefleri listelemek için kullanılır, dolayısıyla 'hepsi' adı. Bununla ilgili özel olan tek şey, çoğu zaman insanların bunu makefile'a ilk hedef olarak koymasıdır, bu da sadece 'make' yazmanın 'tümünü yap' ile aynı şeyi yapacağı anlamına gelir.
Hedef "tümü", sahte bir hedef örneğidir - diskte "tümü" olarak adlandırılan hiçbir şey yoktur. Bu, bir "hepsini yap" yaptığınızda, make'in her zaman onu inşa etmesi gerektiğini düşündüğü ve böylece o hedef için tüm komutları çalıştırdığı anlamına gelir. Bu komutlar tipik olarak makefile'ın bildiği tüm son ürünleri oluşturan komutlar olacaktır, ancak her şeyi yapabilir.
Diğer kukla hedef örnekleri "temiz" ve "kurulumdur" ve aynı şekilde çalışırlar.
Henüz okumadıysanız , aynı zamanda mükemmel bir öğretici olan GNU Make Manual'ı okumalısınız .