help-make
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: implicit rule for relative paths?


From: Toomas Rosin
Subject: Re: implicit rule for relative paths?
Date: Mon, 21 Oct 2002 01:08:53 +0300 (EEST)

Hello,

   Any ideas on how I can handle all relative paths?

If you do not insist on using implicit rules, try using `patsubst' and
`filter', like this:

   relative                   = $(filter $(patsubst /%,%,$1),$1)
   
   all-targets += /abso/lute rela/tive /ab/so/lu/te re/la/ti/ve
   
   relative-targets           = $(call relative,$(all-targets))
   absolute-targets           = $(filter-out $(relative-targets),$(all-targets))
   
   $(absolute-targets):
           @echo in rule for absolute targets
   
   $(relative-targets):
           @echo in rule for relative targets
   
   list:
           @echo absolute targets: $(absolute-targets)
           @echo relative targets: $(relative-targets)
   
   %:
           @echo target \"address@hidden" is $(if $(call 
absolute,$@),absolute,relative)
   
A sample session:

   address@hidden:~ $ make list
   absolute targets: /abso/lute /ab/so/lu/te
   relative targets: rela/tive re/la/ti/ve
   address@hidden:~ $ make /abso/lute
   in rule for absolute targets
   address@hidden:~ $ make rela/tive
   in rule for relative targets
   address@hidden:~ $ make /foo
   target "/foo" is absolute
   address@hidden:~ $ make bar
   target "bar" is relative
   address@hidden:~ $

Peace,
Toomas.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]