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 [EMAIL PROTECTED]@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: [EMAIL PROTECTED]@bar1.o: ../foo/bar1.cpp [EMAIL PROTECTED]@bar2.o: ../foo/bar2.cpp [EMAIL PROTECTED]@bar3.o: ../foo/bar3.cpp Brian _______________________________________________ Help-make mailing list [email protected] http://lists.gnu.org/mailman/listinfo/help-make
