diff options
| author | xq114 <[email protected]> | 2021-11-06 18:55:28 +0800 |
|---|---|---|
| committer | xq114 <[email protected]> | 2021-11-06 18:55:28 +0800 |
| commit | 6bbb5f94c3beadf5d5dfc6db59d05a686647a39b (patch) | |
| tree | 7909ee3cf27c5bb190fd7f80c7e36dbb07d9ddbc | |
| parent | b7adc419e76eef4604f778b86732469a4e9c0471 (diff) | |
improve find_vstudio.lua as well
| -rw-r--r-- | xmake/modules/detect/sdks/find_vstudio.lua | 100 | ||||
| -rw-r--r-- | xmake/toolchains/msvc/load.lua | 35 |
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") |
