diff options
| author | ruki <[email protected]> | 2025-10-09 00:39:41 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2025-10-09 00:39:41 +0800 |
| commit | 3fbba4de3674ce636cdb2e3456eff3828f77355a (patch) | |
| tree | 9227eec9e32877dfd7e942ae767228696f2d44cc /xmake/modules/private/utils/toolchain.lua | |
| parent | 888f5c3b5452b2b8c6c47e89028c4449a238e31f (diff) | |
improve to check msvc
Diffstat (limited to 'xmake/modules/private/utils/toolchain.lua')
| -rw-r--r-- | xmake/modules/private/utils/toolchain.lua | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/xmake/modules/private/utils/toolchain.lua b/xmake/modules/private/utils/toolchain.lua index da2e9febf..fe88b4838 100644 --- a/xmake/modules/private/utils/toolchain.lua +++ b/xmake/modules/private/utils/toolchain.lua @@ -17,10 +17,42 @@ -- @author ruki -- @file toolchain.lua -- + +-- imports +import("core.base.option") +import("core.project.config") import("core.base.semver") import("core.tool.linker") import("core.tool.compiler") import("core.language.language") +import("lib.detect.find_tool") +import("detect.sdks.find_vstudio") + +-- check vc build tools sdk +function check_vc_build_tools(toolchain, sdkdir, check) + local opt = {} + opt.sdkdir = sdkdir + opt.vs_toolset = toolchain:config("vs_toolset") or config.get("vs_toolset") + opt.vs_sdkver = toolchain:config("vs_sdkver") or config.get("vs_sdkver") + + local vcvarsall = find_vstudio.find_build_tools(opt) + if not vcvarsall then + return + end + + local vcvars = vcvarsall[toolchain:arch()] + if vcvars and vcvars.PATH and vcvars.INCLUDE and vcvars.LIB then + toolchain:config_set("vcvars", vcvars) + toolchain:config_set("vcarchs", table.orderkeys(vcvarsall)) + toolchain:config_set("vs_toolset", vcvars.VCToolsVersion) + toolchain:config_set("vs_sdkver", vcvars.WindowsSDKVersion) + + if check then + check(vcvars) + end + return vcvars + end +end -- is the compatible with the host? function is_compatible_with_host(name) |
