On Tue, Feb 2, 2010 at 1:13 AM, Philip Guenther <[email protected]> wrote:
> On Monday, February 1, 2010, Paul Smith <[email protected]> wrote:
> ...
>> define special-rule
>> all: $1.RData
>>
>> clean $1.RData
>>         $$(RM) $$^
>>
>> $1.RData: $1.R $2 $3 $4 $5 $6 $7 $8 $9
>>         Rscript $$<
>> enddef
>>
>> $(eval $(call special-rule,xxx,a.txt,b.txt))
>> $(eval $(call special-rule,uuu,x.txt,y.txt,z.txt))
>>
>>
>> Note that this has the disadvantage that if you have >8 prerequisites it
>> will fail.  You can increase this as much as you want but I can't think
>> of a way, offhand, to make it foolproof.
>
> Why do the dependencies need to be separate arguments to the macro and
> not just one argument with embedded spaces?
>
> Philip Guenther

That is because I want to keep everything related to a RData file
close to each other. Otherwise, I have changed multiple distant places
in a Makefile. When the number of RData is larger, it will be a
nightmare to maintain the makefile.

Actually, I don't think that you should ask this question, as Means of
Abstraction (according to SICP, http://mitpress.mit.edu/sicp/), with
the closure property, which is a very important element in a
programming language, is clearly not completely supported in GNU Make.
Make should be able to build new rules from old rules. The rules
should looks the same to user. Although the above solution practically
works, it lacks the two ingredients.


_______________________________________________
Help-make mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/help-make

Reply via email to