summaryrefslogtreecommitdiff
path: root/xmake/rules/c++/modules/modules_support
diff options
context:
space:
mode:
authorruki <[email protected]>2023-08-16 09:57:05 +0800
committerGitHub <[email protected]>2023-08-16 09:57:05 +0800
commit2f54550cecda5c706a74158d7adc0b14a1847e51 (patch)
treeb3f4836c6ea8e4ea3c66e4dc72a6cbc4e6e9b7d8 /xmake/rules/c++/modules/modules_support
parent6061906acf2d05cd207e79c1934b208cfac337df (diff)
parent77c028d2a67bf8ffe9adeeb80db1dbc42e9355c5 (diff)
Merge pull request #4076 from Arthapz/msvc-remove-experimental-flag-vs16.11
remove /experimental:modules when using VS > to 16.11
Diffstat (limited to 'xmake/rules/c++/modules/modules_support')
-rw-r--r--xmake/rules/c++/modules/modules_support/msvc.lua16
1 files changed, 12 insertions, 4 deletions
diff --git a/xmake/rules/c++/modules/modules_support/msvc.lua b/xmake/rules/c++/modules/modules_support/msvc.lua
index 703374423..393c38904 100644
--- a/xmake/rules/c++/modules/modules_support/msvc.lua
+++ b/xmake/rules/c++/modules/modules_support/msvc.lua
@@ -133,9 +133,13 @@ end
-- load module support for the current target
function load(target)
- -- add modules flags
+ -- add modules flags if visual studio version is < 16.11 (vc 14.29)
local modulesflag = get_modulesflag(target)
- target:add("cxxflags", modulesflag)
+ local msvc = target:toolchain("msvc")
+ local vcvars = msvc:config("vcvars")
+ if vcvars.VCInstallDir and vcvars.VCToolsVersion and semver.compare(vcvars.VCToolsVersion, "14.29") < 0 then
+ target:add("cxxflags", modulesflag)
+ end
-- enable std modules if c++23 by defaults
if target:data("c++.msvc.enable_std_import") == nil then
@@ -155,7 +159,7 @@ function load(target)
local msvc = target:toolchain("msvc")
if msvc then
local vcvars = msvc:config("vcvars")
- if vcvars.VCInstallDir and vcvars.VCToolsVersion and semver.compare(vcvars.VCToolsVersion, "14.35") then
+ if vcvars.VCInstallDir and vcvars.VCToolsVersion and semver.compare(vcvars.VCToolsVersion, "14.35") > 0 then
stdmodulesdir = path.join(vcvars.VCInstallDir, "Tools", "MSVC", vcvars.VCToolsVersion, "modules")
end
end
@@ -606,7 +610,11 @@ function get_modulesflag(target)
if compinst:has_flags("-experimental:module", "cxxflags", {flagskey = "cl_experimental_module"}) then
modulesflag = "-experimental:module"
end
- assert(modulesflag, "compiler(msvc): does not support c++ module!")
+ local msvc = target:toolchain("msvc")
+ local vcvars = msvc:config("vcvars")
+ if vcvars.VCInstallDir and vcvars.VCToolsVersion and semver.compare(vcvars.VCToolsVersion, "14.29") < 0 then
+ assert(modulesflag, "compiler(msvc): does not support c++ module!")
+ end
_g.modulesflag = modulesflag or false
end
return modulesflag or nil