SCons (a python-based build tool) supports this but by default it copies source files over into the build tree and performs the compilation using the copy. The rationale in the manual is that some tools don't support anything but building in the same directory as the source file. (Is python the most common example of this? What else?)
I think this is completely backwards. The common case should be not to make a copy. Compilation errors will be reported with respect to the copy when they ought to refer to the original (because that's the one that needs to get fixed.) A similar issue occurs with debugging information, although that's not quite as inconvenient.
(Side note: some teams put all the build tools into the source repository as well to ensure everybody is using a toolchain that matches the source tree. I'm not a huge fan of this, although I can see the point... what do y'all think?)