vs2010: support precompiled headers

pull/440/head
Nicolas Schneider 9 years ago
parent 79537b54db
commit 18ae344be4
  1. 20
      mesonbuild/backend/vs2010backend.py

@ -426,7 +426,18 @@ class Vs2010Backend(backends.Backend):
rtlib.text = 'MultiThreadedDebugDLL'
funclink = ET.SubElement(clconf, 'FunctionLevelLinking')
funclink.text = 'true'
pch = ET.SubElement(clconf, 'PrecompiledHeader')
pch_node = ET.SubElement(clconf, 'PrecompiledHeader')
pch_sources = []
for lang in ['c', 'cpp']:
pch = target.get_pch(lang)
if len(pch) == 0:
continue
pch_node.text = 'Use'
pch_file = ET.SubElement(clconf, 'PrecompiledHeaderFile')
pch_file.text = pch[0]
pch_include = ET.SubElement(clconf, 'ForcedIncludeFiles')
pch_include.text = pch[0] + ';%(ForcedIncludeFiles)'
pch_sources.append(pch[1])
warnings = ET.SubElement(clconf, 'WarningLevel')
warnings.text = 'Level3'
debinfo = ET.SubElement(clconf, 'DebugInformationFormat')
@ -487,11 +498,16 @@ class Vs2010Backend(backends.Backend):
else:
relpath = h.rel_to_builddir(proj_to_src_root)
ET.SubElement(inc_hdrs, 'CLInclude', Include = relpath)
if len(sources) + len(gen_src) > 0:
if len(sources) + len(gen_src) + len(pch_sources) > 0:
inc_src = ET.SubElement(root, 'ItemGroup')
for s in sources:
relpath = s.rel_to_builddir(proj_to_src_root)
ET.SubElement(inc_src, 'CLCompile', Include=relpath)
for s in pch_sources:
relpath = os.path.join(proj_to_src_dir, s)
comp_pch = ET.SubElement(inc_src, 'CLCompile', Include=relpath)
pch = ET.SubElement(comp_pch, 'PrecompiledHeader')
pch.text = 'Create'
for s in gen_src:
relpath = self.relpath(s, target.subdir)
ET.SubElement(inc_src, 'CLCompile', Include=relpath)

Loading…
Cancel
Save