When Building multiple targets on a project (like release and debug, in the same time (that is you select them all, shift select) and rightclick and then build, you will notice that the configurations used are those of the active configuration. So if you have the release active, then even though it builds the debug, it will do it with the release configurations (that includes option sets as well).
How to reproduce?
Have a project with multiple targets. Set different conditional defines in each (either directly or via option set, doesn’t matter), select them all, right click, and build. After the build, check the command line in the output and try not to curse. Took me about 2 hours to figure out why one of my projects was using a unit even though the conditional compiler directive was flagging to use another.
PS: if you think that using a build group saves you, surprise: it has the exact same bug.
Wow that was unusual. I just wrote an really long comment but after I clicked submit
my comment didn’t show up. Grrrr… well I’m not writing all that over again.
Anyhow, just wanted to say excellent blog!
sorry to hear that. Maybe your internet connection/browser crashed. Or maybe mine did 🙂 Normally, firefox at least, will save your posted data so you can go back in browser history and have your comment there filled in. Just in case it happens again in the future.