diff options
| author | OpportunityLiu <[email protected]> | 2019-07-13 09:32:30 +0800 |
|---|---|---|
| committer | OpportunityLiu <[email protected]> | 2019-07-14 00:04:52 +0800 |
| commit | 515a9c3f542ef1b104a3af9a2398335e2d10fe7c (patch) | |
| tree | 43cce985ab728cc7e4290b369cb000a8762fbff5 /xmake/plugins/project/vstudio/impl | |
| parent | 6061930a5c24f9b1ba717a9a39dafda02e8a802a (diff) | |
support call xmake from msbuild
Diffstat (limited to 'xmake/plugins/project/vstudio/impl')
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 |
