diff options
| author | star9029 <[email protected]> | 2024-11-18 18:47:54 +0800 |
|---|---|---|
| committer | star9029 <[email protected]> | 2024-11-18 18:47:54 +0800 |
| commit | 58ed60423aedaf6197d3e48b96740e52fc826c54 (patch) | |
| tree | 7eb33f78129ea0b081accd9d0b83830e950f669c | |
| parent | 830e6580042a1a84dae0a6b7ebb1a988814630db (diff) | |
fix clang on linux
| -rw-r--r-- | xmake/modules/detect/sdks/find_vstudio.lua | 2 | ||||
| -rw-r--r-- | xmake/toolchains/clang/load.lua | 34 |
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 |
