summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2018-05-22 22:40:42 +0800
committerruki <[email protected]>2018-05-22 10:04:14 +0800
commit4166e04183076201170627e148e9280ad2f11e8d (patch)
treec7d419199dc02162b1208fd01e3a21d44703531a
parent08834be448c3a4b77202bf6420ba8adad03cb238 (diff)
improve find_vstudio
-rw-r--r--xmake/modules/detect/sdks/find_vstudio.lua38
1 files changed, 31 insertions, 7 deletions
diff --git a/xmake/modules/detect/sdks/find_vstudio.lua b/xmake/modules/detect/sdks/find_vstudio.lua
index f5a122b58..a169b51a5 100644
--- a/xmake/modules/detect/sdks/find_vstudio.lua
+++ b/xmake/modules/detect/sdks/find_vstudio.lua
@@ -145,19 +145,43 @@ function main()
, ["5.0"] = "VS50COMNTOOLS"
, ["4.2"] = "VS42COMNTOOLS"
}
+
+ -- find vs from environment variables
+ local VCInstallDir = os.getenv("VCInstallDir")
+ local VisualStudioVersion = os.getenv("VisualStudioVersion")
+ if VCInstallDir and VisualStudioVersion then
+
+ -- find vcvarsall.bat
+ local vcvarsall = path.join(VCInstallDir, "Auxiliary", "Build", "vcvarsall.bat")
+ if os.isfile(vcvarsall) then
+
+ -- load vcvarsall
+ local vcvarsall_x86 = _load_vcvarsall(vcvarsall, "x86")
+ local vcvarsall_x64 = _load_vcvarsall(vcvarsall, "x64")
+
+ -- save results
+ local results = {}
+ results[vsvers[VisualStudioVersion]] = {version = VisualStudioVersion, vcvarsall_bat = vcvarsall, vcvarsall = {x86 = vcvarsall_x86, x64 = vcvarsall_x64}}
+ return results
+ end
+ end
-- find vs2017 -> vs4.2
local results = {}
for _, version in ipairs({"15.0", "14.0", "12.0", "11.0", "10.0", "9.0", "8.0", "7.1", "7.0", "6.0", "5.0", "4.2"}) do
- -- find vcvarsall.bat
- local vcvarsall = find_file("vcvarsall.bat", {format("$(reg HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\SxS\\VS7;%s)\\VC", version),
- format("$(reg HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\Microsoft\\VisualStudio\\SxS\\VS7;%s)\\VC", version),
- format("$(reg HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\SxS\\VS7;%s)\\VC\\Auxiliary\\Build", version),
- format("$(reg HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\Microsoft\\VisualStudio\\SxS\\VS7;%s)\\VC\\Auxiliary\\Build", version),
- format("$(env %s)\\..\\..\\VC", vsenvs[version] or "")})
+ -- init pathes
+ local pathes =
+ {
+ format("$(reg HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\SxS\\VS7;%s)\\VC", version),
+ format("$(reg HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\Microsoft\\VisualStudio\\SxS\\VS7;%s)\\VC", version),
+ format("$(reg HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\SxS\\VS7;%s)\\VC\\Auxiliary\\Build", version),
+ format("$(reg HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\Microsoft\\VisualStudio\\SxS\\VS7;%s)\\VC\\Auxiliary\\Build", version),
+ format("$(env %s)\\..\\..\\VC", vsenvs[version] or "")
+ }
- -- found?
+ -- find vcvarsall.bat
+ local vcvarsall = find_file("vcvarsall.bat", pathes)
if vcvarsall then
-- load vcvarsall