diff options
| author | ruki <[email protected]> | 2018-05-22 22:40:42 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2018-05-22 10:04:14 +0800 |
| commit | 4166e04183076201170627e148e9280ad2f11e8d (patch) | |
| tree | c7d419199dc02162b1208fd01e3a21d44703531a | |
| parent | 08834be448c3a4b77202bf6420ba8adad03cb238 (diff) | |
improve find_vstudio
| -rw-r--r-- | xmake/modules/detect/sdks/find_vstudio.lua | 38 |
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 |
