Thanks for the quick answer Steven. There's aspect of the old behavior I haven't been able to reproduce: If I make a target depend on copied.txt from a different project (directory), how do I get the copied.txt's <location> to be based on the dependent target rather than the path components of the project that copied.txt is defined in?I'm not sure I understand what you're trying to do here. I realize that sometimes files may need to be in the same directory, but if the dependent target is in a different project, then that automatically means that you get different build directories.
src/Jamfile:Suppose in order for foo and testfoo to run, they need to have copied.txt in the same directory as the executable. For foo, I can do that by making it depend on a compiled target, like:
make copied.txt : others/others.txt : common.copy ; exe foo : foo.cpp : <dependency>copied.txt ; tests/Jamfile: run testfoo testfoo.cpp : input.txt : : <dependency>../src//foo <dependency>../src//copied ;
src/Jamfile:Annoying, but better than <relevant>[every single feature that can go in a build path]. But how can I do the same for testfoo? Is there a shortcut like <relevant>all ? Or can that be implemented easily?
obj foo_o : foo.cpp ;
make copied.txt : others/others.txt : common.copy : <dependency>foo_o ;
exe foo : foo_o : <dependency>copied.txt ;