pre fanusikov make
Pavel Troller
patrol na sinus.cz
Čtvrtek Květen 9 18:41:38 CEST 2013
Zdravím,
tak jsem odpověděl chybně. Došlo u mne k chybě v experimentu, a
to následovně:
<vytvořen přesný originál makefile>
patrol na gonio:~/mt$ make
make: *** No rule to make target `s.bin', needed by `bin'. Stop.
(chová se stejně jako wekovi)
patrol na gonio:~/mt$ make s.bin
Making s.bin
(chová se opět stejně jako wekovi)
<dále jsem přidal mezery do definice TARGET>
patrol na gonio:~/mt$ make
get s.bin
make: get: Command not found
make: *** [bin] Error 127
Toto chování mne nepřekvapilo; o implicitních pravidlech vím a samozřejmě
příkaz get nemám běžně definován, takže toto chování jsem považoval za to,
že "se chová, jak má" a odpověděl jsem v mailu.
Jenže ona ta změna chování nebyla způsobena přidáním mezer do definice
TARGET, ale tím, že se druhým pokusem o spuštění a`la wek vyrvořil s.bin:
patrol na gonio:~/mt$ l
total 8
-rw-r--r-- 1 patrol users 85 May 9 18:32 Makefile
-rw-r--r-- 1 patrol users 6 May 9 18:34 s.bin
patrol na gonio:~/mt$ rm s.bin
patrol na gonio:~/mt$ make
make: *** No rule to make target `s.bin', needed by `bin'. Stop.
čili po odstranění s.bin se již make chová jako před tím, bez ohledu na
mezery v definici.
Takže tímto odpovídám kolegovi wekovi - ne, moje make je zrovnatak plné
implcitních pravidel jako vaše, ačkoliv na Linuxu :-). A omlouvám se, že
jsem se nechal takto napálit - přeci jen, dělal jsem to v pracovní době
a řešil jsem současně řadu dalších úloh, nemělo to dostatečnou prioritu :-).
Zdraví Pavel
> Zdravím,
> osobně bych dal mezery do definice TARGET:
> TARGET = s
> Když jsem to zkusil u sebe (Linux), make dělalo, co se od něj očekávalo.
> Pavel
>
> > Co je zle na tomto makefile? Tabulatory su tam, kde treba. Preco nestaci
> > napisat "make", a musim napisat "make s.bin" aby mi to vyrobilo ten s.bin?
> > Ak do TARGET dam nieco ine, napr. "TARGET=t", tak "make" vytvori bez reci
> > t.bin.
> >
> > (Podotykam, ze som to sam nedokazal vyriesit, musel mi napovedat kolega).
> >
> > wek
> >
> >
> >
> > -----
> >
> > TARGET=s
> >
> > all: bin
> >
> > bin: $(TARGET).bin
> >
> > %.bin :
> > @echo "Making $@"
> > @echo $@ > $@
> >
> > -----
> >
> > c:\wek\SMO\tmp\tmp>make --version
> > GNU Make 3.81
> > Copyright (C) 2006 Free Software Foundation, Inc.
> > This is free software; see the source for copying conditions.
> > There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
> > PARTICULAR PURPOSE.
> >
> > This program built for i386-pc-mingw32
> >
> > c:\wek\SMO\tmp\tmp>cat makefile
> > TARGET=s
> >
> > all: bin
> >
> > bin: $(TARGET).bin
> >
> > %.bin :
> > @echo "Making $@"
> > @echo $@ > $@
> >
> >
> > c:\wek\SMO\tmp\tmp>make
> > make: *** No rule to make target `s.bin', needed by `bin'. Stop.
> >
> > c:\wek\SMO\tmp\tmp>make s.bin
> > Making s.bin
> >
> > c:\wek\SMO\tmp\tmp>
> >
> >
> > _______________________________________________
> > HW-list mailing list - sponsored by www.HW.cz
> > Hw-list na list.hw.cz
> > http://list.hw.cz/mailman/listinfo/hw-list
> _______________________________________________
> 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