From 6ab9f77800027dfa2aae8ba4094b60f0255254bb Mon Sep 17 00:00:00 2001 From: Oliver Schneider Date: Sat, 14 Nov 2015 22:16:01 +0000 Subject: Adding support for Visual Studio 2015 projects and solutions. Does not add the VisualStudioVersion and MinimumVisualStudioVersion in solution files, but VS2015 opens those fine regardless and picks them up first even when VS2010, 2012 and 2013 are installed as well. Added corresponding tests and verified that all is as expected. --HG-- branch : vs2015_support --- src/_manifest.lua | 1 + src/actions/vstudio/vs2010_vcxproj.lua | 2 +- src/actions/vstudio/vs2015.lua | 57 ++++++++++++++++++++++ tests/actions/vstudio/sln2005/header.lua | 17 +++++++ tests/actions/vstudio/vc2010/test_config_props.lua | 13 +++++ 5 files changed, 89 insertions(+), 1 deletion(-) create mode 100644 src/actions/vstudio/vs2015.lua diff --git a/src/_manifest.lua b/src/_manifest.lua index ee07f81..19f497a 100644 --- a/src/_manifest.lua +++ b/src/_manifest.lua @@ -65,6 +65,7 @@ "actions/vstudio/vs2010_vcxproj_filters.lua", "actions/vstudio/vs2012.lua", "actions/vstudio/vs2013.lua", + "actions/vstudio/vs2015.lua", -- Xcode action "actions/xcode/_xcode.lua", diff --git a/src/actions/vstudio/vs2010_vcxproj.lua b/src/actions/vstudio/vs2010_vcxproj.lua index 4adef79..dcff220 100644 --- a/src/actions/vstudio/vs2010_vcxproj.lua +++ b/src/actions/vstudio/vs2010_vcxproj.lua @@ -79,7 +79,7 @@ _p(2,'%s', iif(optimisation(cfg) == "Disabled","true","false")) _p(2,'%s',iif(cfg.flags.Unicode,"Unicode","MultiByte")) - local toolsets = { vs2012 = "v110", vs2013 = "v120" } + local toolsets = { vs2012 = "v110", vs2013 = "v120", vs2015 = "v140" } local toolset = toolsets[_ACTION] if toolset then _p(2,'%s', toolset) diff --git a/src/actions/vstudio/vs2015.lua b/src/actions/vstudio/vs2015.lua new file mode 100644 index 0000000..8fa0ca9 --- /dev/null +++ b/src/actions/vstudio/vs2015.lua @@ -0,0 +1,57 @@ +-- +-- vs2015.lua +-- Baseline support for Visual Studio 2015. +-- Copyright (c) 2013 Jason Perkins and the Premake project +-- + + premake.vstudio.vc2015 = {} + local vc2015 = premake.vstudio.vc2015 + local vstudio = premake.vstudio + + +--- +-- Register a command-line action for Visual Studio 2015. +--- + + newaction + { + trigger = "vs2015", + shortname = "Visual Studio 2015", + description = "Generate Microsoft Visual Studio 2015 project files", + os = "windows", + + valid_kinds = { "ConsoleApp", "WindowedApp", "StaticLib", "SharedLib" }, + + valid_languages = { "C", "C++", "C#"}, + + valid_tools = { + cc = { "msc" }, + dotnet = { "msnet" }, + }, + + onsolution = function(sln) + premake.generate(sln, "%%.sln", vstudio.sln2005.generate) + end, + + onproject = function(prj) + if premake.isdotnetproject(prj) then + premake.generate(prj, "%%.csproj", vstudio.cs2005.generate) + premake.generate(prj, "%%.csproj.user", vstudio.cs2005.generate_user) + else + premake.generate(prj, "%%.vcxproj", premake.vs2010_vcxproj) + premake.generate(prj, "%%.vcxproj.user", premake.vs2010_vcxproj_user) + premake.generate(prj, "%%.vcxproj.filters", vstudio.vc2010.generate_filters) + end + end, + + + oncleansolution = premake.vstudio.cleansolution, + oncleanproject = premake.vstudio.cleanproject, + oncleantarget = premake.vstudio.cleantarget, + + vstudio = { + solutionVersion = "12", + targetFramework = "4.5.2", + toolsVersion = "14.0", + } + } diff --git a/tests/actions/vstudio/sln2005/header.lua b/tests/actions/vstudio/sln2005/header.lua index 71e32f5..a959677 100755 --- a/tests/actions/vstudio/sln2005/header.lua +++ b/tests/actions/vstudio/sln2005/header.lua @@ -77,3 +77,20 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 2013 ]] end + + function suite.On2015() + _ACTION = "vs2015" + prepare() + test.capture [[ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2015 + ]] +--[[ +VS2015 seems to add: + +VisualStudioVersion = 14.0.23107.0 +MinimumVisualStudioVersion = 10.0.40219.1 + +which don't seem to be mandatory, though. +]] + end diff --git a/tests/actions/vstudio/vc2010/test_config_props.lua b/tests/actions/vstudio/vc2010/test_config_props.lua index 50d78ae..2970ad4 100644 --- a/tests/actions/vstudio/vc2010/test_config_props.lua +++ b/tests/actions/vstudio/vc2010/test_config_props.lua @@ -76,3 +76,16 @@ ]] end + + function suite.structureIsCorrect_onDefaultValues_on2015() + _ACTION = "vs2015" + prepare() + test.capture [[ + + Application + true + MultiByte + v140 + + ]] + end -- cgit v1.2.3