OT hadanka s make na predlzeny vikend

Josef Štengl ok1ced na nagano.cz
Pátek Květen 8 08:42:19 CEST 2015


Nebo verzi měnit ručně (protože kdo jiný kromě autora ví které číslo měnit - nemá smysl měnit verzi, když jste upravil jen 
pár komentářů) a měnit jen timestamp při překladu/linkování. Ten se může měnit pořád a je dostatečně  jednoznačný.

Dne 7.5.2015 v 19:43 Jan Waclawek napsal(a):
> Toto v skutocnosti nie je hadanka, lebo som este neprisiel na dobre
> riesenie (aj ked mam niekolko zlych :-) )
>
> Mam "standardny" makefile tohoto charakteru
>
> x.elf: a.o b.o c.o
>    prikaz ktory pusti linker a zlinkuje a.o, b.o a c.o do x.elf
>
> %.o: %.c
>    prikaz ktory skompiluje nieco.o do nieco.c (*)
>
>
> Zatial je to vsetko jednoduche.
>
> (*) generuje (prislusnymi prepinacmi pre preprocesor) aj subory so
> zavislostami (dependencies), ktore vznikaju kvoli #include v suboroch
> nieco.c. Makefile obsahuje prikaz, ktorym sa tieto subory includnu.
>
> To je vsetko este normalne.
>
> V a.c mam #include "version.h", v ktorom nie je nic ine ako jedno #define
> VERSION NNN, kde NNN je cislo verzie.
>
> Mam program update_version, ktory vo version.h inkrementuje NNN. Chcem ho
> inkrementovat samozrejme vtedy, ked sa zmeni program v ktorejkolvek jeho
> casti, takze do makefile pridam:
>
> version.h: x.elf
>    prikaz update_version
>
>
> no ale make je nespokojny, lebo takto vznikne cyklicka zavislost:
>
> version.h <- x.elf <- a.c <-(v depencency subore, kvoli #includu) version.h
>
> a vypise:
>
> make: Circular version.h <- x.elf dependency dropped.
>
> Ako z toho von?
>
>
> Dakujem
>
> wek
>
>
>
>
> PS. Ak sa niekto chce hrat, tak:
>
> all: x.elf
>
> clean:
> 	@rm -f *.o
> 	@rm -f x.elf
>
> init: clean
> 	@echo creating a.c b.c c.c version.h
> 	@echo "#include version.h" > a.c
> 	@echo "blah" > b.c
> 	@echo "blah" > c.c
> 	@echo "#define VERSION 123" > version.h
>
>
> x.elf: a.o b.o c.o
> 	@echo linking
> 	@cat a.o  b.o  c.o >x.elf
>
> %.o: %.c
> 	@echo making $@ from $<
> 	@cp $< $@
>
> a.c: version.h
> 	@echo version.h
> 	@cp $< $@
>
> _version.h: x.elf
> 	@echo "updating" version.h
> 	@touch version.h
>
> .PHONY: all clean init
>
>
> # disable implicit rules
> .SUFFIXES:
>
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>


Další informace o konferenci Hw-list