Forum: Diğer Konular RSS
Makefile klasör oluşturma
zafer #1
Üye Tem 2009 tarihinden beri · 700 mesaj · Konum: Ankara
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: Makefile klasör oluşturma
Basit bir makefile dosyası hazırladım ve kullanıyorum ama örneğin obj dosyalarını obj isimli bir klasöre ve çalıştırılabilir dosyayıda bin isimli bir klasörde oluşturmak istiyorum ama makefile komutlarının içine bir türlü klasörleri ekleyemedim.

Daha doğrusu işin nasıl yapıldığını çözemedim. Nette okuduklarımdan makefile dosyasının aşağıdan yukarı işlendiğini felan öğrendim birazda kafam karıştı doğrusu  :-/

main : main.obj
    dmd -of"main" main.obj
 
main.obj : main.d
    dmd -c main.d
https://github.com/zafer06 - depo
erdem (Moderatör) #2
Üye Tem 2009 tarihinden beri · 978 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Burada bir örneği var ufak değişikliklerle istediğin gibi kullanabileceğini düşünüyorum.

https://github.com/erdemoncel/oyun/blob/master/Makefile

Tabi windows kullanıyorsan biraz değişiyor. Ama mantık aynı:

https://github.com/erdemoncel/oyun/blob/master/win32.mak
acehreli (Moderatör) #3
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Ben de zamanında şunu kullanmışım:

  http://acehreli.org/turkcecpp/programlar/pisti/pisti/Makef…

Onda klasörler açıkça 'mkdir -p' ile oluşturuluyorlar.

Ali
zafer #4
Üye Tem 2009 tarihinden beri · 700 mesaj · Konum: Ankara
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Açıkcası Erdem'in eklediği köprüdeki makefile dosyalarını çözmek daha kolay geldi. Bu arada Ali'nin de hakkını yemeyelim dosyadaki açıklamalar kesinlikle çok güzel, ancak ben makefile dosyasına çok yabancı olduğum için olsa gerek tam olarak anlayamadım.

Erdem'in dosyasında gördüğüm kadarıyla dosya oluştrktan sonra "mv" komutu ile klasöre taşınmış, benim istediğim ise bu dosyanın direk olarak o klasörde oluşturulması yani örneğin şöyle bir hedef yazmak doğru olur mu?

obj/main.o : main.d
        dmd -c main.d

Birde klasör oluşturmak için nasıl bir komut yazmak gerekiyor. Yani şöyle bişey doğru mu?

obj : obj
        mkdir obj
https://github.com/zafer06 - depo
acehreli (Moderatör) #5
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Erdem'in yöntemi de güzel. Açıkça mkdir'e gerek yokmuş. Şununla başlayabilirsin:

KAYNAKLAR = \
  deneme.d \
  deneme2.d \

PROGRAM_PARCALARI = $(KAYNAKLAR:%.d=obj/%.o)

deneme: ${PROGRAM_PARCALARI}
    dmd $^ -of$@

obj/%.o: %.d
    dmd -c $< -of$@


Sırasıyla şunları söylüyorlar:

  • Kaynaklar şunlardır

  • Program parçaları foo.d'lerin obj/foo.o'ya karşılık gelenleridir

  • deneme programı program parçalarına bağımlıdır ve şu komutla oluşturulur

  • obj/foo.o gibi dosyalar foo.d gibi dosyalardan şöyle oluşturulurlar

Ali
erdem (Moderatör) #6
Üye Tem 2009 tarihinden beri · 978 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Bence make dosyasının yeni klasör oluşturması biraz tutarsız. Aynı klasörde daha önceden kaynak dosyalar varsa daha da işler karışabilir. O yüzden programın kaynak dosyalarını bir dizinde toplayıp (bu dizini kendimiz oluşturuyoruz) ana dizinden make komutunu çalıştırmak daha mantıklı. Daha sonra kütüphane dosyaları vs.. ayrı bir dizinde toplamak isteyebiliriz.

Zaten ben de make dosyasını Ali beyin make dosyasından çarpmıştım! :)

Derleme sonucu oluşturulan çalıştırılabilir dosyalar ana dizinde oluşuyor.  mv komutunu da çalıştırılabilir dosyaları da ayrı bir dizine taşımak için kullandım.
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2017-11-19, 05:54:16 (UTC -08:00)