summaryrefslogtreecommitdiff
path: root/xmake/modules
diff options
context:
space:
mode:
authorruki <[email protected]>2025-12-26 10:29:58 +0800
committerGitHub <[email protected]>2025-12-26 10:29:58 +0800
commitf6bead07b47ebf489125198f97cd398ef2b67d22 (patch)
tree624d7f0ef54aef2aac58f478742d5e471658dec2 /xmake/modules
parent810f3e5a697f4e546045b80fdb0aa4893717932f (diff)
parentfd0512ecccfc30a82356747e106ed98db45ae0cf (diff)
Merge pull request #7164 from xmake-io/clangcl
fix envs for clang-cl
Diffstat (limited to 'xmake/modules')
-rw-r--r--xmake/modules/core/tools/cl.lua15
-rw-r--r--xmake/modules/private/utils/toolchain.lua9
2 files changed, 16 insertions, 8 deletions
diff --git a/xmake/modules/core/tools/cl.lua b/xmake/modules/core/tools/cl.lua
index 240189e4c..e5f8f7eaf 100644
--- a/xmake/modules/core/tools/cl.lua
+++ b/xmake/modules/core/tools/cl.lua
@@ -267,6 +267,13 @@ function nf_language(self, stdname)
-- the stdc++ maps
if _g.cxxmaps == nil then
+ -- clang-cl with c++23preview does not work for c++ modules
+ -- https://github.com/xmake-io/xmake/issues/7169
+ local cxx23 = {"-std:c++23", "-std:c++23preview", "-std:c++latest"}
+ if self:name() == "clang_cl" then
+ cxx23 = {"-std:c++23", "-std:c++latest"}
+ end
+ local cxx2b = cxx23
_g.cxxmaps =
{
cxx11 = "-std:c++11"
@@ -281,10 +288,10 @@ function nf_language(self, stdname)
, gnuxx20 = {"-std:c++20", "-std:c++latest"}
, cxx2a = {"-std:c++20", "-std:c++latest"}
, gnuxx2a = {"-std:c++20", "-std:c++latest"}
- , cxx23 = {"-std:c++23", "-std:c++23preview", "-std:c++latest"}
- , gnuxx23 = {"-std:c++23", "-std:c++23preview", "-std:c++latest"}
- , cxx2b = {"-std:c++23", "-std:c++23preview", "-std:c++latest"}
- , gnuxx2b = {"-std:c++23", "-std:c++23preview", "-std:c++latest"}
+ , cxx23 = cxx23
+ , gnuxx23 = cxx23
+ , cxx2b = cxx2b
+ , gnuxx2b = cxx2b
, cxx26 = {"-std:c++26", "-std:c++latest"}
, gnuxx26 = {"-std:c++26", "-std:c++latest"}
, cxxlatest = "-std:c++latest"
diff --git a/xmake/modules/private/utils/toolchain.lua b/xmake/modules/private/utils/toolchain.lua
index 48aabdffa..263137300 100644
--- a/xmake/modules/private/utils/toolchain.lua
+++ b/xmake/modules/private/utils/toolchain.lua
@@ -180,14 +180,15 @@ function get_clang_target_flags(toolchain)
end
-- add vs environments
-function add_vsenvs(toolchain, expect_vars)
+function add_vsenvs(toolchain, opt)
+ opt = opt or {}
local curenvs = os.getenvs()
- expect_vars = expect_vars or {"PATH", "LIB", "INCLUDE", "LIBPATH"}
- for _, name in ipairs(expect_vars) do
+ local varnames = opt.varnames or {"PATH", "LIB", "INCLUDE", "LIBPATH"}
+ for _, name in ipairs(varnames) 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 not table.contains(varnames, name:upper()) then
_add_vsenv(toolchain, name, curenvs)
end
end