Thread overview
Makefile klasör oluşturma
Feb 14, 2012
zafer
Feb 14, 2012
erdem
Feb 14, 2012
zafer
Feb 14, 2012
erdem
February 14, 2012

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

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

February 14, 2012

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

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

February 14, 2012

Ben de zamanında şunu kullanmışım:

http://acehreli.org/turkcecpp/programlar/pisti/pisti/Makefile

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

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

February 14, 2012

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

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

February 15, 2012

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.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

February 14, 2012

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

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]