Makefile temelleri
- C kursu
- Orta seviye
- Ders 62/116
- 5 dk
Makefile ile derleme otomasyonu öğrenirsin.
Makefile nedir?
Makefile, make aracının okuduğu derleme tarifleri dosyasıdır. Çok dosyalı C projelerinde her dosyayı tek tek derlemek yorucudur; Makefile bu işi otomatikleştirir. Her bölüm bir hedef, bağımlılıklar ve tarif satırından oluşur.
Biçim: app: main.c utils.c (hedef: bağımlılıklar), sonraki satır TAB ile başlar ve gcc -o app main.c utils.c tarifini içerir. make app komutu hedefi üretir. Makefile, değişen dosyaları algılar; yalnızca gerekli derlemeleri yapar. Bu yüzden büyük projelerde zaman kazandırır.
Değişkenler ve clean
Makefile'da değişken tanımlanır: CC = gcc, CFLAGS = -Wall -g. Tarifte $(CC) $(CFLAGS) -o app main.c biçiminde kullanılır. Bu, derleyici ve bayrakları tek yerden değiştirmeyi sağlar.
Yaygın bir hedef clean'dir: clean: altında rm -f app *.o yazılır. make clean derleme ürünlerini siler. Sahte hedefler (clean, all) için .PHONY: clean bildirimi önerilir; bu, dosya adıyla çakışmayı önler. Bu desen tüm C projelerinde standarttır.
Uygulama Makefile yaz
Bir Makefile yaz: CC = gcc değişkeni, app: main.c hedefi, TAB ile başlayan $(CC) -o app main.c tarifi, clean: hedefi ve TAB ile rm -f app tarifi. Çıktı gcc -o app main.c olmalı.
Başlangıç kodu
# Makefile: app ve clean hedeflerini yaz
# CC = gcc
# app: main.c
# $(CC) ile app'i derle
# clean:
# app'i silÖrnek çözüm
CC = gcc
app: main.c
$(CC) -o app main.c
clean:
rm -f appBeklenen çıktı
gcc -o app main.c
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Makefile tarif satırı nasıl başlamalı?
- İki boşluk ile
- Boşluk ile
- TAB ile Doğru cevap
- Yorum ile
Açıklama: Makefile tarif satırı TAB ile başlamak zorundadır.
2 Makefile hedefini tamamla
app: main.c utils.c
gcc -o ____ main.c utils.c
app: main.c utils.c
gcc -o app main.c utils.c
Açıklama: gcc -o app main.c utils.c çıktı dosyasını app yapar.
3 Makefile parçalarını eşle
| Kavram | Anlamı |
|---|---|
app: main.c |
Hedef ve bağımlılık |
gcc ... |
Tarif satırı |
CC = gcc |
Değişken tanımı |
clean: |
Sahte hedef |