[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: text functions in implicit rules
From: |
Brian Dessent |
Subject: |
Re: text functions in implicit rules |
Date: |
Sat, 12 Apr 2008 16:29:57 -0700 |
Jan Althaus wrote:
> is it at all possible to create an implicit rule that'd do something
> similar to:
> %.o: $(subst foo,bar,%.cpp)
>
> The reason I'm asking is that I'd like to have a makefile that takes
> a list of source files that are potentially scattered over different
> directories, but builds the objects/dependency files into a single,
> common dir.
> The idea would've been to mangle the names so e.g. ../foo/bar.cpp
> would become address@hidden@bar.o
>
> Am I fundamentally asking the wrong question? Is there a way of doing
> this without scattering the objects/dependencies over the sources
> dirs? (in a way that allows the list to contain absolute paths and
> the like?)
I don't know that you can do this with implicit rules, but you can do it
by using foreach to evalulate a function that generates the dependency
for each target:
define mkdepend
$(addsuffix .o,$(subst .,_,$(subst /,@,$(basename $(1))))): $(1)
endef
src = ../foo/bar1.cpp ../foo/bar2.cpp ../foo/bar3.cpp
$(foreach s,$(src),$(eval $(call mkdepend,$(s))))
You can change 'eval' to 'info' to debug this, in which case you'll see
the produced rules:
address@hidden@bar1.o: ../foo/bar1.cpp
address@hidden@bar2.o: ../foo/bar2.cpp
address@hidden@bar3.o: ../foo/bar3.cpp
Brian