summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorxq114 <[email protected]>2021-11-06 18:55:28 +0800
committerxq114 <[email protected]>2021-11-06 18:55:28 +0800
commit6bbb5f94c3beadf5d5dfc6db59d05a686647a39b (patch)
tree7909ee3cf27c5bb190fd7f80c7e36dbb07d9ddbc
parentb7adc419e76eef4604f778b86732469a4e9c0471 (diff)
improve find_vstudio.lua as well
-rw-r--r--xmake/modules/detect/sdks/find_vstudio.lua100
-rw-r--r--xmake/toolchains/msvc/load.lua35
2 files changed, 70 insertions, 65 deletions
diff --git a/xmake/modules/detect/sdks/find_vstudio.lua b/xmake/modules/detect/sdks/find_vstudio.lua
index 2934d23c8..0abbb131c 100644
--- a/xmake/modules/detect/sdks/find_vstudio.lua
+++ b/xmake/modules/detect/sdks/find_vstudio.lua
@@ -28,15 +28,72 @@ local vcvars = {"path",
"libpath",
"include",
"DevEnvdir",
- "VSInstallDir",
- "VCInstallDir",
+ "VSINSTALLDIR",
+ "VCINSTALLDIR",
"WindowsSdkDir",
"WindowsLibPath",
"WindowsSDKVersion",
"WindowsSdkBinPath",
+ "WindowsSdkVerBinPath",
+ "ExtensionSdkDir",
"UniversalCRTSdkDir",
"UCRTVersion",
- "VCToolsVersion"}
+ "VCToolsVersion",
+ "VCIDEInstallDir",
+ "VCToolsInstallDir",
+ "VCToolsRedistDir",
+ "VisualStudioVersion",
+ "VSCMD_VER",
+ "VSCMD_ARG_app_plat",
+ "VSCMD_ARG_HOST_ARCH",
+ "VSCMD_ARG_TGT_ARCH"}
+
+-- init vsvers
+local vsvers =
+{
+ ["17.0"] = "2022"
+, ["16.0"] = "2019"
+, ["15.0"] = "2017"
+, ["14.0"] = "2015"
+, ["12.0"] = "2013"
+, ["11.0"] = "2012"
+, ["10.0"] = "2010"
+, ["9.0"] = "2008"
+, ["8.0"] = "2005"
+, ["7.1"] = "2003"
+, ["7.0"] = "7.0"
+, ["6.0"] = "6.0"
+, ["5.0"] = "5.0"
+, ["4.2"] = "4.2"
+}
+
+-- init vsenvs
+local vsenvs =
+{
+ ["17.0"] = "VS170COMNTOOLS"
+, ["16.0"] = "VS160COMNTOOLS"
+, ["15.0"] = "VS150COMNTOOLS"
+, ["14.0"] = "VS140COMNTOOLS"
+, ["12.0"] = "VS120COMNTOOLS"
+, ["11.0"] = "VS110COMNTOOLS"
+, ["10.0"] = "VS100COMNTOOLS"
+, ["9.0"] = "VS90COMNTOOLS"
+, ["8.0"] = "VS80COMNTOOLS"
+, ["7.1"] = "VS71COMNTOOLS"
+, ["7.0"] = "VS70COMNTOOLS"
+, ["6.0"] = "VS60COMNTOOLS"
+, ["5.0"] = "VS50COMNTOOLS"
+, ["4.2"] = "VS42COMNTOOLS"
+}
+
+-- get all known Visual Studio environment variables
+function get_vcvars()
+ local realvcvars = vcvars
+ for _, v in pairs(vsenvs) do
+ table.insert(realvcvars, v)
+ end
+ return realvcvars
+end
-- load vcvarsall environment variables
function _load_vcvarsall(vcvarsall, vsver, arch, opt)
@@ -59,7 +116,7 @@ function _load_vcvarsall(vcvarsall, vsver, arch, opt)
else
file:print("call \"%s\" %s %s > nul", vcvarsall, arch, opt.sdkver and opt.sdkver or "")
end
- for idx, var in ipairs(vcvars) do
+ for idx, var in ipairs(get_vcvars()) do
file:print("echo " .. var .. " = %%" .. var .. "%%")
end
file:close()
@@ -148,41 +205,6 @@ function main(opt)
return
end
- -- init vsvers
- local vsvers =
- {
- ["17.0"] = "2022"
- , ["16.0"] = "2019"
- , ["15.0"] = "2017"
- , ["14.0"] = "2015"
- , ["12.0"] = "2013"
- , ["11.0"] = "2012"
- , ["10.0"] = "2010"
- , ["9.0"] = "2008"
- , ["8.0"] = "2005"
- , ["7.1"] = "2003"
- , ["7.0"] = "7.0"
- , ["6.0"] = "6.0"
- , ["5.0"] = "5.0"
- , ["4.2"] = "4.2"
- }
-
- -- init vsenvs
- local vsenvs =
- {
- ["14.0"] = "VS140COMNTOOLS"
- , ["12.0"] = "VS120COMNTOOLS"
- , ["11.0"] = "VS110COMNTOOLS"
- , ["10.0"] = "VS100COMNTOOLS"
- , ["9.0"] = "VS90COMNTOOLS"
- , ["8.0"] = "VS80COMNTOOLS"
- , ["7.1"] = "VS71COMNTOOLS"
- , ["7.0"] = "VS70COMNTOOLS"
- , ["6.0"] = "VS60COMNTOOLS"
- , ["5.0"] = "VS50COMNTOOLS"
- , ["4.2"] = "VS42COMNTOOLS"
- }
-
-- init options
opt = opt or {}
diff --git a/xmake/toolchains/msvc/load.lua b/xmake/toolchains/msvc/load.lua
index f6547fed0..ee61b46ab 100644
--- a/xmake/toolchains/msvc/load.lua
+++ b/xmake/toolchains/msvc/load.lua
@@ -56,32 +56,15 @@ function main(toolchain)
toolchain:set("toolset", "ar", "link.exe")
-- add vs environments
- _add_vsenv(toolchain, "PATH")
- _add_vsenv(toolchain, "LIB")
- _add_vsenv(toolchain, "INCLUDE")
- _add_vsenv(toolchain, "LIBPATH")
- _add_vsenv(toolchain, "WindowsSdkDir")
- _add_vsenv(toolchain, "WindowsSDKVersion")
- _add_vsenv(toolchain, "WindowsSdkBinPath")
- _add_vsenv(toolchain, "WindowsSDKLibVersion")
- _add_vsenv(toolchain, "WindowsSdkVerBinPath")
- _add_vsenv(toolchain, "DevEnvDir")
- _add_vsenv(toolchain, "ExtensionSdkDir")
- _add_vsenv(toolchain, "VCIDEInstallDir")
- _add_vsenv(toolchain, "VCINSTALLDIR")
- _add_vsenv(toolchain, "VCToolsInstallDir")
- _add_vsenv(toolchain, "VCToolsRedistDir")
- _add_vsenv(toolchain, "VCToolsVersion")
- _add_vsenv(toolchain, "VisualStudioVersion")
- _add_vsenv(toolchain, "VSINSTALLDIR")
- _add_vsenv(toolchain, "VSCMD_VER")
- _add_vsenv(toolchain, "VSCMD_ARG_app_plat")
- _add_vsenv(toolchain, "VSCMD_ARG_HOST_ARCH")
- _add_vsenv(toolchain, "VSCMD_ARG_TGT_ARCH")
- _add_vsenv(toolchain, "VS140COMNTOOLS")
- _add_vsenv(toolchain, "VS150COMNTOOLS")
- _add_vsenv(toolchain, "VS160COMNTOOLS")
- _add_vsenv(toolchain, "VS170COMNTOOLS")
+ local expect_vars = {"PATH", "LIB", "INCLUDE", "LIBPATH"}
+ for _, name in ipairs(expect_vars) do
+ _add_vsenv(toolchain, name)
+ end
+ for _, name in ipairs(find_vstudio.get_vcvars()) do
+ if not table.contains(expect_vars, name:upper()) then
+ _add_vsenv(toolchain, name)
+ end
+ end
-- add some default flags
toolchain:add("cl.cxxflags", "/EHsc")