In scons, string defines cannot contain spaces. The entire value is wrapped in quote marks even if it has already been escape-quoted. env['RCFLAGS'].append("-DTEST=\"a space\"") env['RCFLAGS'].append("-DTEST=\"nospace\"") Gives: windres "-DTEST="a space"" -DTEST="nospace" And the first is, of course, an invalid arg.