summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorstar9029 <[email protected]>2024-11-18 18:47:54 +0800
committerstar9029 <[email protected]>2024-11-18 18:47:54 +0800
commit58ed60423aedaf6197d3e48b96740e52fc826c54 (patch)
tree7eb33f78129ea0b081accd9d0b83830e950f669c
parent830e6580042a1a84dae0a6b7ebb1a988814630db (diff)
fix clang on linux
-rw-r--r--xmake/modules/detect/sdks/find_vstudio.lua2
-rw-r--r--xmake/toolchains/clang/load.lua34
2 files changed, 24 insertions, 12 deletions
diff --git a/xmake/modules/detect/sdks/find_vstudio.lua b/xmake/modules/detect/sdks/find_vstudio.lua
index b65f5e660..45eb2820e 100644
--- a/xmake/modules/detect/sdks/find_vstudio.lua
+++ b/xmake/modules/detect/sdks/find_vstudio.lua
@@ -126,7 +126,7 @@ function find_build_tools(opt)
local tmp_version
local WindowsSDKVersion
- local WindowsSDKVersionsDirs = os.dirs(path.join(sdkdir, "Windows Kits/10/bin/*"))
+ local WindowsSDKVersionsDirs = os.dirs(path.join(sdkdir, "Windows Kits/10/Lib/*"))
for _, dir in ipairs(WindowsSDKVersionsDirs) do
local ver = path.filename(dir)
if ver == opt.vs_sdkver then
diff --git a/xmake/toolchains/clang/load.lua b/xmake/toolchains/clang/load.lua
index c2585f98e..83ce677a6 100644
--- a/xmake/toolchains/clang/load.lua
+++ b/xmake/toolchains/clang/load.lua
@@ -63,16 +63,28 @@ function main(toolchain)
if toolchain:is_plat("windows") then
target = target .. "-windows-msvc"
- -- add vs environments
- local expect_vars = {"PATH", "LIB", "INCLUDE", "LIBPATH"}
- local curenvs = os.getenvs()
- for _, name in ipairs(expect_vars) do
- _add_vsenv(toolchain, name, curenvs)
- end
- for _, name in ipairs(find_vstudio.get_vcvars()) do
- if not table.contains(expect_vars, name:upper()) then
+ if is_host("windows") then
+ -- add vs environments
+ local expect_vars = {"PATH", "LIB", "INCLUDE", "LIBPATH"}
+ local curenvs = os.getenvs()
+ for _, name in ipairs(expect_vars) do
_add_vsenv(toolchain, name, curenvs)
end
+ for _, name in ipairs(find_vstudio.get_vcvars()) do
+ if not table.contains(expect_vars, name:upper()) then
+ _add_vsenv(toolchain, name, curenvs)
+ end
+ end
+ elseif is_host("linux") then
+ local vcvars = toolchain:config("vcvars")
+ if vcvars then
+ for _, dir in ipairs(table.wrap(path.splitenv(vcvars["INCLUDE"]))) do
+ toolchain:add("includedirs", dir)
+ end
+ for _, dir in ipairs(table.wrap(path.splitenv(vcvars["LIB"]))) do
+ toolchain:add("linkdirs", dir)
+ end
+ end
end
elseif toolchain:is_plat("mingw") then
target = target .. "-windows-gnu"
@@ -100,8 +112,8 @@ function main(toolchain)
end
if target then
- toolchain:add("cxflags", "-target", target)
- toolchain:add("ldflags", "-target", target)
- toolchain:add("shflags", "-target", target)
+ toolchain:add("cxflags", "--target=" .. target)
+ toolchain:add("ldflags", "--target=" .. target)
+ toolchain:add("shflags", "--target=" .. target)
end
end