summaryrefslogtreecommitdiff
path: root/xmake/plugins/project/vstudio/impl
diff options
context:
space:
mode:
authorOpportunityLiu <[email protected]>2019-07-13 09:32:30 +0800
committerOpportunityLiu <[email protected]>2019-07-14 00:04:52 +0800
commit515a9c3f542ef1b104a3af9a2398335e2d10fe7c (patch)
tree43cce985ab728cc7e4290b369cb000a8762fbff5 /xmake/plugins/project/vstudio/impl
parent6061930a5c24f9b1ba717a9a39dafda02e8a802a (diff)
support call xmake from msbuild
Diffstat (limited to 'xmake/plugins/project/vstudio/impl')
-rw-r--r--xmake/plugins/project/vstudio/impl/vs200x_vcproj.lua15
-rw-r--r--xmake/plugins/project/vstudio/impl/vs201x_solution.lua3
-rw-r--r--xmake/plugins/project/vstudio/impl/vs201x_vcxproj.lua39
-rwxr-xr-xxmake/plugins/project/vstudio/impl/vs201x_vcxproj_filters.lua3
-rw-r--r--xmake/plugins/project/vstudio/impl/vsinfo.lua93
5 files changed, 99 insertions, 54 deletions
diff --git a/xmake/plugins/project/vstudio/impl/vs200x_vcproj.lua b/xmake/plugins/project/vstudio/impl/vs200x_vcproj.lua
index 61878af6a..91769a6bf 100644
--- a/xmake/plugins/project/vstudio/impl/vs200x_vcproj.lua
+++ b/xmake/plugins/project/vstudio/impl/vs200x_vcproj.lua
@@ -97,7 +97,7 @@ function _make_linkflags(target, vcprojdir)
-- save flag
table.insert(flags, flag)
end
-
+
-- make flags string
flags = os.args(flags)
@@ -114,20 +114,11 @@ function _make_header(vcprojfile, vsinfo, target)
-- the target name
local targetname = target:name()
- -- the versions
- local versions =
- {
- vs2002 = '7.0'
- , vs2003 = '7.1'
- , vs2005 = '8.0'
- , vs2008 = '9.0'
- }
-
-- make header
- vcprojfile:print("<?xml version=\"1.0\" encoding=\"gb2312\"?>")
+ vcprojfile:print("<?xml version=\"1.0\" encoding=\"utf-8\"?>")
vcprojfile:enter("<VisualStudioProject")
vcprojfile:print("ProjectType=\"Visual C++\"")
- vcprojfile:print("Version=\"%s0\"", assert(versions["vs" .. vsinfo.vstudio_version]))
+ vcprojfile:print("Version=\"%s0\"", assert(vsinfo.project_version))
vcprojfile:print("Name=\"%s\"", targetname)
vcprojfile:print("ProjectGUID=\"{%s}\"", hash.uuid(targetname))
vcprojfile:print("RootNamespace=\"%s\"", targetname)
diff --git a/xmake/plugins/project/vstudio/impl/vs201x_solution.lua b/xmake/plugins/project/vstudio/impl/vs201x_solution.lua
index 3cd2ce4e0..d38ac15cf 100644
--- a/xmake/plugins/project/vstudio/impl/vs201x_solution.lua
+++ b/xmake/plugins/project/vstudio/impl/vs201x_solution.lua
@@ -116,7 +116,4 @@ function make(vsinfo)
-- exit solution file
slnfile:close()
-
- -- convert gb2312 to utf8
- io.writefile(slnpath, io.readfile(slnpath):convert("gb2312", "utf8"))
end
diff --git a/xmake/plugins/project/vstudio/impl/vs201x_vcxproj.lua b/xmake/plugins/project/vstudio/impl/vs201x_vcxproj.lua
index 8545ee802..6fea45987 100644
--- a/xmake/plugins/project/vstudio/impl/vs201x_vcxproj.lua
+++ b/xmake/plugins/project/vstudio/impl/vs201x_vcxproj.lua
@@ -26,17 +26,6 @@ import("vsfile")
-- get toolset version
function _get_toolset_ver(targetinfo, vsinfo)
- -- the toolset versions
- local toolset_vers =
- {
- vs2010 = "v100"
- , vs2012 = "v110"
- , vs2013 = "v120"
- , vs2015 = "v140"
- , vs2017 = "v141"
- , vs2019 = "v142"
- }
-
-- get toolset version from vs version
local toolset_ver = nil
local vs_toolset = config.get("vs_toolset")
@@ -45,7 +34,7 @@ function _get_toolset_ver(targetinfo, vsinfo)
toolset_ver = "v" .. verinfo[1] .. (verinfo[2] or "0")
end
if not toolset_ver then
- toolset_ver = toolset_vers["vs" .. vsinfo.vstudio_version]
+ toolset_ver = vsinfo.toolset_version
end
-- for xp?
@@ -63,14 +52,6 @@ end
-- get platform sdk version
function _get_platform_sdkver(target, vsinfo)
- -- the default sdk version
- local sdkvers =
- {
- vs2015 = "10.0.10240.0"
- , vs2017 = "10.0.14393.0"
- , vs2019 = "10.0.17763.0"
- }
-
-- get sdk version for vcvarsall[arch].WindowsSDKVersion
local sdkver = nil
for _, targetinfo in ipairs(target.info) do
@@ -81,7 +62,7 @@ function _get_platform_sdkver(target, vsinfo)
end
-- done
- return sdkver or sdkvers["vs" .. vsinfo.vstudio_version]
+ return sdkver or vsinfo.sdk_version
end
-- make compiling command
@@ -167,20 +148,9 @@ end
-- make header
function _make_header(vcxprojfile, vsinfo)
- -- the versions
- local versions =
- {
- vs2010 = '4'
- , vs2012 = '4'
- , vs2013 = '12'
- , vs2015 = '14'
- , vs2017 = '15'
- , vs2019 = '16'
- }
-
-- make header
vcxprojfile:print("<?xml version=\"1.0\" encoding=\"utf-8\"?>")
- vcxprojfile:enter("<Project DefaultTargets=\"Build\" ToolsVersion=\"%s.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">", assert(versions["vs" .. vsinfo.vstudio_version]))
+ vcxprojfile:enter("<Project DefaultTargets=\"Build\" ToolsVersion=\"%s.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">", assert(vsinfo.project_version))
end
-- make tailer
@@ -813,7 +783,4 @@ function make(vsinfo, target)
-- exit solution file
vcxprojfile:close()
-
- -- convert gb2312 to utf8
- io.writefile(vcxprojpath, io.readfile(vcxprojpath):convert("gb2312", "utf8"))
end
diff --git a/xmake/plugins/project/vstudio/impl/vs201x_vcxproj_filters.lua b/xmake/plugins/project/vstudio/impl/vs201x_vcxproj_filters.lua
index 0a850bda1..d241dd909 100755
--- a/xmake/plugins/project/vstudio/impl/vs201x_vcxproj_filters.lua
+++ b/xmake/plugins/project/vstudio/impl/vs201x_vcxproj_filters.lua
@@ -161,7 +161,4 @@ function make(vsinfo, target)
-- exit solution file
filtersfile:close()
-
- -- convert gb2312 to utf8
- io.writefile(filterspath, io.readfile(filterspath):convert("gb2312", "utf8"))
end
diff --git a/xmake/plugins/project/vstudio/impl/vsinfo.lua b/xmake/plugins/project/vstudio/impl/vsinfo.lua
new file mode 100644
index 000000000..3da30d398
--- /dev/null
+++ b/xmake/plugins/project/vstudio/impl/vsinfo.lua
@@ -0,0 +1,93 @@
+--!A cross-platform build utility based on Lua
+--
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+-- http://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+--
+-- Copyright (C) 2015 - 2019, TBOOX Open Source Group.
+--
+-- @author OpportunityLiu
+-- @file vsinfo.lua
+--
+
+local vsinfo =
+{
+ [2002] =
+ { vstudio_version = "2002"
+ , solution_version = "7"
+ , project_version = "7.0"
+ }
+, [2003] =
+ { vstudio_version = "2003"
+ , solution_version = "8"
+ , project_version = "7.1"
+ }
+, [2005] =
+ { vstudio_version = "2005"
+ , solution_version = "9"
+ , project_version = "8.0"
+ }
+, [2008] =
+ { vstudio_version = "2008"
+ , solution_version = "10"
+ , project_version = "9.0"
+ }
+, [2010] =
+ { vstudio_version = "2010"
+ , project_version = "4"
+ , filters_version = "4.0"
+ , solution_version = "11"
+ , toolset_version = "v100"
+ }
+, [2012] =
+ { vstudio_version = "2012"
+ , project_version = "4"
+ , filters_version = "4.0"
+ , solution_version = "12"
+ , toolset_version = "v110"
+ }
+, [2013] =
+ { vstudio_version = "2013"
+ , project_version = "12"
+ , filters_version = "4.0"
+ , solution_version = "12"
+ , toolset_version = "v120"
+ }
+, [2015] =
+ { vstudio_version = "2015"
+ , project_version = "14"
+ , filters_version = "4.0"
+ , solution_version = "12"
+ , toolset_version = "v140"
+ , sdk_version = "10.0.10240.0"
+ }
+, [2017] =
+ { vstudio_version = "2017"
+ , project_version = "15"
+ , filters_version = "4.0"
+ , solution_version = "12"
+ , toolset_version = "v141"
+ , sdk_version = "10.0.14393.0"
+ }
+, [2019] =
+ { vstudio_version = "2019"
+ , project_version = "16"
+ , filters_version = "4.0"
+ , solution_version = "12"
+ , toolset_version = "v142"
+ , sdk_version = "10.0.17763.0"
+ }
+}
+
+function main(version)
+ assert(version)
+ return assert(vsinfo[version]);
+end \ No newline at end of file