Are you aware of any way (apart from #ifdef directives in the files themselves) to tell MSVS which files to try to build separately for each build configuration?
You can exclude specific files from particular builds by right clicking them and modifying their properties.
I am not sure if this is the "right" way to do it. Looking at how zlib did it, you could make separate projects (whatever they are called) which specify the build configuration and then in those separate projects you have standard configurations like "debug", "Release", "Release (64)" etc.
Currently I have the messy approach of various builds like SDL2, SDL2 Debug, POSIX etc in one project. From a configuration point of view having separate projects (maybe they are sub-projects?) for things like GDI, POSIX, SDL, SDL2 etc each linking to different libraries and C++ files and then each of those has separate standard configurations (debug and release for 32 and 64).
The configurations with different C++ source files is supported in community 2013 and 2015. I am unsure of 2012. I would recommend upgrading to Community 2015 since it is completely free and suitable for even small scale commercial operations. However depending on what else you use it for (eg work) that might not be applicable.