From 10a6e2787243e3a005c227bbb21bbd271a5e9b31 Mon Sep 17 00:00:00 2001 From: James Harris Date: Thu, 7 Apr 2016 16:22:02 -0500 Subject: [PATCH] Add PlatformToolset ver. to msvs proj template This patch adds support for an easier syntax for customizing which version of Visual Studio msvs.py targets. It also allows users to specify the PlatformToolset property on projects generated by waf. This is necessary in order to properly generate projects for newer versions of Visual Studio such as 2013 and 2015. Example Syntax: To generate a solution targeted at visual studio 2013 use the following example: ```Python class msvs_2013(msvs.msvs_generator): cmd = 'msvs2013' numver = '13.00' vsver = '2013' platform_toolset_ver = 'v120' ``` This will populate the associated fields correctly for msvs 2013. --- waflib/extras/msvs.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/waflib/extras/msvs.py b/waflib/extras/msvs.py index ef36e520..4e682561 100644 --- a/waflib/extras/msvs.py +++ b/waflib/extras/msvs.py @@ -105,7 +105,7 @@ PROJECT_TEMPLATE = r''' Makefile ${b.outdir} - v110 + ${project.platform_toolset_ver} ${endfor} @@ -509,6 +509,7 @@ class vsnode_project(vsnode): self.path = node self.uuid = make_uuid(node.win32path()) self.name = node.name + self.platform_toolset_ver = getattr(ctx, 'platform_toolset_ver', None) self.title = self.path.win32path() self.source = [] # list of node objects self.build_properties = [] # list of properties (nmake commands, output dir, etc) @@ -715,6 +716,9 @@ class msvs_generator(BuildContext): '''generates a visual studio 2010 solution''' cmd = 'msvs' fun = 'build' + numver = '11.00' # Visual Studio Version Number + vsver = '2010' # Visual Studio Version Year + platform_toolset = 'v110' # Platform Toolset Version Number def init(self): """ @@ -744,8 +748,9 @@ class msvs_generator(BuildContext): if not getattr(self, 'vsnode_project_view', None): self.vsnode_project_view = vsnode_project_view - self.numver = '11.00' - self.vsver = '2010' + self.numver = self.__class__.numver + self.vsver = self.__class__.vsver + self.platform_toolset_ver = self.__class__.platform_toolset_ver def execute(self): """ @@ -980,6 +985,8 @@ class msvs_2008_generator(msvs_generator): '''generates a visual studio 2008 solution''' cmd = 'msvs2008' fun = msvs_generator.fun + numver = '10.00' + vsver = '2008' def init(self): if not getattr(self, 'project_extension', None): @@ -997,8 +1004,6 @@ class msvs_2008_generator(msvs_generator): self.vsnode_project_view = wrap_2008(vsnode_project_view) msvs_generator.init(self) - self.numver = '10.00' - self.vsver = '2008' def options(ctx): """