Имя выходного файла не может быть определено из исходного кода, но только из среды сборки.
Если вы используете Visual Studio IDE, вы можете создать несколько конфигураций, каждая из которых имеет различные константы #define (определения препроцессора в свойствах конфигурации -> (язык) и другой выходной каталог. Если вам требуется указанный вами формат файла exe Вы можете выполнить копирование как шаг после сборки.
Другим способом будет сборка с использованием make-файлов; это даст полный контроль над зависимостями и выходными файлами, если потребуется очень много усилий для освоения и создания make-файлов.
Примечание: я проверил это для Visual Studio 2008 Express Edition / C ++