Ah it was an MSVC issue - it overwrites object files if you have a structure like...
treecd1f7bfd29bbd87c24d8730bd92fce7e0a6c2798
drwxr-xr-x - fridh
-rw-r--r-- 1262 function.cpp
drwxr-xr-x - intermediary
drwxr-xr-x - interpreter
drwxr-xr-x - lexer
-rw-r--r-- 788 main.cpp
-rw-r--r-- 1372 symbol.cpp
drwxr-xr-x - variable