summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2024-05-10 00:48:48 +0800
committerruki <[email protected]>2024-05-10 00:48:48 +0800
commit5699981509737cef679890125c84d48405496118 (patch)
tree3412888324d2306d391abdbadba6cf8c5d02a276
parentd874b69fea978efc2306c4108a21ce295617683a (diff)
improve msvc host #5077
-rw-r--r--xmake/modules/detect/sdks/find_vstudio.lua12
1 files changed, 10 insertions, 2 deletions
diff --git a/xmake/modules/detect/sdks/find_vstudio.lua b/xmake/modules/detect/sdks/find_vstudio.lua
index d928fafe7..ad1d933a0 100644
--- a/xmake/modules/detect/sdks/find_vstudio.lua
+++ b/xmake/modules/detect/sdks/find_vstudio.lua
@@ -118,13 +118,21 @@ function _load_vcvarsall(vcvarsall, vsver, arch, opt)
if vsver and tonumber(vsver) >= 16 then
file:print("set VSCMD_SKIP_SENDTELEMETRY=yes")
end
+ local host_arch = os.arch()
if is_vsdevcmd then
if opt.vcvars_ver then
- file:print("call \"%s\" -arch=%s -winsdk=%s -vcvars_ver=%s > nul", vcvarsall, arch, opt.sdkver and opt.sdkver or "", opt.vcvars_ver)
+ file:print("call \"%s\" -host_arch=%s -arch=%s -winsdk=%s -vcvars_ver=%s > nul", vcvarsall, host_arch, arch, opt.sdkver and opt.sdkver or "", opt.vcvars_ver)
else
- file:print("call \"%s\" -arch=%s -winsdk=%s > nul", vcvarsall, arch, opt.sdkver and opt.sdkver or "")
+ file:print("call \"%s\" -host_arch=%s -arch=%s -winsdk=%s > nul", vcvarsall, host_arch, arch, opt.sdkver and opt.sdkver or "")
end
else
+ -- @see https://github.com/xmake-io/xmake/issues/5077
+ if host_arch ~= arch then
+ if host_arch == "x64" then
+ host_arch = "amd64"
+ end
+ arch = host_arch .. "_" .. arch
+ end
if opt.vcvars_ver then
file:print("call \"%s\" %s %s -vcvars_ver=%s > nul", vcvarsall, arch, opt.sdkver and opt.sdkver or "", opt.vcvars_ver)
else