Thread overview
Gnu make kullanımı
Nov 26, 2016
erdem
Nov 27, 2016
erdem
Nov 28, 2016
erdem
Nov 28, 2016
erdem
November 26, 2016

Programın kaynak kodunda değişiklik varsa bir ileti gösteren bir make dosyası yazmaya çalışıyorum.

KAYNAK := $(shell ls -tp *.cc | grep -v /$ | head -1)
PROGRAM := ${basename ${KAYNAK}}

all: derle ileti

derle: ${PROGRAM}

${PROGRAM}: ${KAYNAK}
	g++ ${KAYNAK} -o ${PROGRAM}

ileti: ${PROGRAM}
	@echo ${PROGRAM} zaten güncel tekrar derlemenize gerek yok

PHONY: ileti derle

Make kütüğü örneğin oluşturduğumuz kaynak kütüğün ismi deneme.cc ise

'deneme zaten güncel tekrar derleminize gerek yok ' yazıyor.

Ama deneme.cc üzerinde değişiklik yaptığımızda da gene bu iletiyi gösteriyor. Ben eğer kaynak kütük değiştiyse ve derlenmesi gerekiyorsa bu iletiyi yerine ''programı derliyorum'' gibi bir ileti göstermek istiyorum.

Bunun nasıl yapılacağını bilen var mı acaba.

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

November 27, 2016

Tam aradığım çözüm buydu teşekkürler ;-)

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

November 27, 2016

make, hedef dosya oluşturma mantığı üzerine kurulu olduğundan 'ileti' yerine .PHONY olmayan 'ileti_gonderildi' gibi bir dosya oluşturman gerekiyor.

Ali

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

November 28, 2016

Sanırım gene olmadı:

KAYNAK := $(shell ls -tp *.cc | grep -v /$ | head -1)
PROGRAM := ${basename ${KAYNAK}}

all: derle ileti_derle

derle: ${PROGRAM}

${PROGRAM}: ${KAYNAK}
	g++ ${KAYNAK} -o ${PROGRAM}

ileti_derle: ileti
	@echo ${PROGRAM} zaten güncel tekrar derlemenize gerek yok

PHONY: derle

Phony olmayan ileti_derle adında bir kısım oluşturdum. Sonra ileti isminde bir dosya oluşturdum.

Ama bu sefer de derlenirken bu iletiyi yazıyor.

make
g++ deneme.cc -o deneme
deneme zaten güncel tekrar derlemenize gerek yok

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

November 28, 2016

Şu şekilde oluyormuş:

KAYNAK := $(shell ls -tp *.cc | grep -v /$ | head -1)
PROGRAM := ${basename ${KAYNAK}}

all: ileti derle program

derle: ${KAYNAK}

${PROGRAM}: ${KAYNAK}
	g++ ${KAYNAK} -o ${PROGRAM}

program: ${PROGRAM}

ileti:
	@make -q derle program && echo ${PROGRAM} zaten güncel tekrar derlemenize gerek yok || true

temizle clean:
	rm -f *.o *.c~ *.cc~ *.c# Makefile~
	find . -maxdepth 1 -perm +100 -type f -delete

PHONY: program derle

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