2 years ago we had our building system entirely crossplatform. That means e.g. the Visual C++ optimizing compiler ran on wine and GCC was working as cross compiler for LInux. This worked pretty well.
We stopped using it in favour of separat building systems because:
1. you are forced to actually use the other build before handing it to a tester
2. you don't need to write Makefiles by hand (yes we had Visual C++ GNU-Makefiles, not NMAKEfiles)
3. you can get much easier updates for the perticular compiler chain (no wine tweaking etc.)
4. switching compiler/linker switches is much easier
5. You have a most recent SVN/GIT trunk while building ( I heard of people who forget to check in their code actually