makefile ile derleme -2
Öncelikle, sanki şu linkteki işleri yapmakla başlayacağım.
http://www.cs.colby.edu/maxwell/courses/tutorials/maketutor/
Burada bir makefile tutorial var. Baktım, tureng "öğretici başlangıç" diye çevirmiş tutorial'ı.
o sitedeki gibi 3 tane kaynak kod dosyası oluşturdum
hellomake.c | hellofunc.c | hellomake.h |
---|---|---|
#include <hellomake.h> int main() { // call a function in another file myPrintHelloMake(); return(0); } | #include <stdio.h> #include <hellomake.h> void myPrintHelloMake(void) { printf("Hello makefiles!\n"); return; } | /* example include file */ void myPrintHelloMake(void); |
bu dosyaları C: altında c_dene diye bir klasöre attım. Klasörde sadece bu üç dosya mevcut.
MinGW'yi ortam değişkenlerine eklemediğim için bu dizinde, direkt olduğu klasörü belirterek çağıracağım.
"C:\MinGW\bin\gcc" --version
sonra ilk yaptığım makefile olmadan derlemek
Adım1: makefile olmadan derleme
"C:\MinGW\bin\gcc" -o hellomake hellomake.c hellofunc.c -I.yazdığım satır ve aldığım aldığım hata:
Aynı kodu tekrar çalıştırdığımda (bu sefer gcc'nin dizinini yazmaya gerek kalmadı)
gcc -o hellomake hellomake.c hellofunc.c -I.
klasörde hellomake.exe dosyası oluştu 😀.
Yazdığımız komutu ("gcc -o hellomake hellomake.c hellofunc.c -I.") incelersek, "hellomake.c" ve "hellofunc.c" dosyalarını derleyen, "-I." kısmı ile de include (*.h) dosyaları için şu an olduğu klasöre bakan ve hellomake.h'ı gören bir komut.
Şimdi kodu değiştirip tekrar derlemek istersem bu satırı tekrarlamam gerekiyor. .exe dosyasını silip tekrar aynı kodu çalıştırdığımda aynı sonucu alacağım.
Peki makefile ile ne yapacağım?
Adım2: makefile ile en basit şekilde derleme
Makefile ya da makefile adında uzantısı olmayan bir dosyayı aynı klasörde oluşturuyorum. İçine de notepad ile
hellomake: hellomake.c hellofunc.c hellomake.h
gcc -o hellomake hellomake.c hellofunc.c -I.
komutlarını giriyorum. burada dikkat edilmesi gereken, ikinci satırdan önce tab tuşu ile boşluk bırakmak gerekiyor.
Şimdi yapacağım çok basit, Direkt bu dizinde make.exe çağırmak. Ancak bir önceki sayfada bahsettiğim gibi benim make uygulaması make.exe değil mingw32-make.exe
komut satırına mingw32-make yazdığımda hellomake.exe dosyam tekrardan oluşuyor.gcc -o hellomake hellomake.c hellofunc.c -I.
komutlarını giriyorum. burada dikkat edilmesi gereken, ikinci satırdan önce tab tuşu ile boşluk bırakmak gerekiyor.
Şimdi yapacağım çok basit, Direkt bu dizinde make.exe çağırmak. Ancak bir önceki sayfada bahsettiğim gibi benim make uygulaması make.exe değil mingw32-make.exe
Çalıştırdığımda da aynı mesajı alıyorum 😉.
İncelersek, make.exe benim o dizinde bulunan makefile adındaki dosyamda bulunan satırları çalıştırıyor. Böylece bir önceki seferdeki gibi her seferinde komutu uzun uzun yazmam gerekmiyor.
bunun dışında, make'i herhangi bir argüman (argument) olmadan çağırdığım için en baştaki rule (kural?) ile çalışmaya başlıyor.
Şimdi makefile'ı daha verimli kullanma zamanı.
Bir sonraki adım
Yorumlar
Yorum Gönder