Мне тоже нужно было это сделать - мне нужно было собрать две разные версии моего приложения, и я хотел иметь возможность создавать сценарии сборки, используя VCBUILD. В VCBUILD есть переключатель командной строки / override, но я не уверен, что его можно использовать для изменения символов #define, которые затем можно проверить с помощью условной компиляции #if.
Решение, с которым я столкнулся, состояло в том, чтобы написать простую утилиту для создания заголовочного файла, который # определял символ на основе состояния переменной среды и запускала утилиту с шага перед сборкой. Перед каждым выполнением шага VCBUILD сценарий устанавливает переменную среды и «касается» файла в приложении, чтобы гарантировать выполнение шага предварительной сборки.
Да, это безобразный хак, но это было лучшее, что я мог придумать!