diff options
| author | ruki <[email protected]> | 2023-08-16 09:57:05 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2023-08-16 09:57:05 +0800 |
| commit | 2f54550cecda5c706a74158d7adc0b14a1847e51 (patch) | |
| tree | b3f4836c6ea8e4ea3c66e4dc72a6cbc4e6e9b7d8 /xmake/rules/c++/modules/modules_support | |
| parent | 6061906acf2d05cd207e79c1934b208cfac337df (diff) | |
| parent | 77c028d2a67bf8ffe9adeeb80db1dbc42e9355c5 (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.lua | 16 |
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 |
