vs: use regular quotes instead of '&quot;' in Generator commands
Seems like CustomBuild does not like '&quot;', but works just fine with
regular quotes.
@@ -129,10 +129,9 @@ class Vs2010Backend(backends.Backend):
args = self.replace_outputs(args, target_private_dir, outfiles_rel)
args = [x.replace("@SOURCE_DIR@", self.environment.get_source_dir()).replace("@BUILD_DIR@", target_private_dir)
for x in args]
- fullcmd = exe_arr + self.replace_extra_args(args, genlist)
- command = ' '.join(self.special_quote(fullcmd))
+ cmd = exe_arr + self.replace_extra_args(args, genlist)
cbs = ET.SubElement(idgroup, 'CustomBuild', Include=infilename)
- ET.SubElement(cbs, 'Command').text = command
+ ET.SubElement(cbs, 'Command').text = ' '.join(self.quote_arguments(cmd))
ET.SubElement(cbs, 'Outputs').text = ';'.join(outfiles)
return generator_output_files, custom_target_output_files, custom_target_include_dirs
@@ -331,8 +330,8 @@ class Vs2010Backend(backends.Backend):
directories = os.path.normpath(target.subdir).split(os.sep)
return os.sep.join(['..'] * len(directories))
- def special_quote(self, arr):
- return ['&quot;%s&quot;' % i for i in arr]
+ def quote_arguments(self, arr):
+ return ['"%s"' % i for i in arr]
def create_basic_crap(self, target):
project_name = target.name
@@ -404,8 +403,7 @@ class Vs2010Backend(backends.Backend):
# from the target dir, not the build root.
target.absolute_paths = True
(srcs, ofilenames, cmd) = self.eval_custom_target_command(target, True)
- cmd_templ = '''"%s" ''' * len(cmd)
- ET.SubElement(customstep, 'Command').text = cmd_templ % tuple(cmd)
+ ET.SubElement(customstep, 'Command').text = ' '.join(self.quote_arguments(cmd))
ET.SubElement(customstep, 'Outputs').text = ';'.join(ofilenames)
ET.SubElement(customstep, 'Inputs').text = ';'.join(srcs)
ET.SubElement(root, 'Import', Project='$(VCTargetsPath)\Microsoft.Cpp.targets')
