Thread View: comp.unix.programmer
2 messages
2 total messages
Started by * Tong *
Wed, 21 Mar 2007 21:05
[GNU Make] Stem for phony target
Author: * Tong *
Date: Wed, 21 Mar 2007 21:05
Date: Wed, 21 Mar 2007 21:05
40 lines
1934 bytes
1934 bytes
Hi, I have the following make file: ------------------------------------------- all: something else .PHONY: MakeAppleJuice MakeOrangeJuice MakeTomatoJuice MakeAppleJuice: make_juice Apple.in.source Apple.in.condition MakeOrangeJuice: make_juice Orange.in.source Orange.in.condition MakeTomatoJuice: make_juice Tomato.in.source Tomato.in.condition ------------------------------------------- Is there anyway to combine the 3 rules into one? I hope there is, because the 3 rules only different in what files they use and what juices then make (but I still need the 3 phony targets). I tried the following but it didn't work: ------------------------------------------- Make%Juice: %.in.source make_juice $*.in.source $*.in.condition ------------------------------------------- Please help. thanks -- Tong (remove underscore(s) to reply) http://xpt.sf.net/techdocs/ http://xpt.sf.net/tools/ -- Posted via a free Usenet account from http://www.teranews.com
[GNU Make] Generic phony rules
Author: * Tong *
Date: Thu, 22 Mar 2007 14:50
Date: Thu, 22 Mar 2007 14:50
114 lines
4270 bytes
4270 bytes
My OP:
I have the following make file:
-------------------------------------------
all: something else
.PHONY: MakeAppleJuice MakeOrangeJuice MakeTomatoJuice
MakeAppleJuice:
make_juice Apple.in.source Apple.in.condition
MakeOrangeJuice:
make_juice Orange.in.source Orange.in.condition
MakeTomatoJuice:
make_juice Tomato.in.source Tomato.in.condition
-------------------------------------------
Is there anyway to combine the 3 rules into one? I hope there is, because
the 3 rules only different in what files they use and what juices then make
(but I still need the 3 phony targets).
On Thu, 22 Mar 2007 12:47:15 +0000, * Tong * wrote:
> On Wed, 21 Mar 2007 23:33:30 -0500, Jean-Rene David wrote:
>
>> If you want to get the effect of .PHONY, there's another
>> trick:
>>
>> FORCE:
>> Make%Juice: %.in.source FORCE
>> make_juice $*.in.source $*.in.condition
>
> Thanks for the reply. I still can't get it working:
>
> $ cat Makefile
> make_juice := echo
>
> all: something else
>
> .PHONY: MakeAppleJuice MakeOrangeJuice MakeTomatoJuice
>
> FORCE:
> Make%Juice: %.in.source FORCE
> make_juice $*.in.source $*.in.condition
>
> #MakeAppleJuice:
>
> $ make MakeAppleJuice
> make: Nothing to be done for `MakeAppleJuice'.
>
> If the last "MakeAppleJuice:" is uncommented, It still won't work. My make
> is:
>
> $ make --version
> GNU Make 3.81
>
>>> Which shouldn't be, because AppleJuice is a phony target.
>>
>> Quite the opposite. In light of the above, if you remove the
>> target from the phonies, it works.
>
> I don't quite understand this. You mean do a 'rm <target>' as the make rule?
>
> This is what I tried also:
>
> $ rm -v Apple.in.*
> removed `Apple.in.condition'
> removed `Apple.in.source'
>
> $ make MakeAppleJuice
> make: Nothing to be done for `MakeAppleJuice'.
>
> I read quite a lot, but just can't apprehend enough to make it works.
I just tried "Empty Target Files" trick,
http://www.gnu.org/software/autoconf/manual/make/Empty-Targets.html#Empty-Targets
-----------------------------------------------------------
$ cat Makefile
make_juice := echo
all: something else
MakeJuice: $(wildcard *.in.source)
$(make_juice) $? $(addsuffix .in.condition, $(patsubst %.in.source,%,$?))
touch MakeJuice
$ make MakeJuice
echo Orange.in.source Tomato.in.source Orange.in.condition Tomato.in.condition
Orange.in.source Tomato.in.source Orange.in.condition Tomato.in.condition
touch MakeJuice
$ make MakeJuice
make: `MakeJuice' is up to date.
-----------------------------------------------------------
But that's different than my OP, because I need to deal with each juice
explicitly, and the command format is strictly
make_juice $*.in.source $*.in.condition
So, is it possible to have such generic phony rule?
Thanks
--
Tong (remove underscore(s) to reply)
http://xpt.sf.net/techdocs/
http://xpt.sf.net/tools/
--
Posted via a free Usenet account from http://www.teranews.com
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads