diff options
| author | ruki <[email protected]> | 2022-12-17 12:35:53 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2022-12-17 12:35:53 +0800 |
| commit | 47f6392bd65c5a6803fdbe9714870928db5d7a1b (patch) | |
| tree | daa52b241ce81dd7dfeabd1ae1db11263487cea1 /tests/projects/c++/modules | |
| parent | f6ce7c17992fa055b2d11260831f7c004784c319 (diff) | |
| parent | 1ba0ad7cbb139e04ebe29ea4fcede2fa57376433 (diff) | |
Merge pull request #3168 from Arthapz/cpp23-msvc-stdlib
add support of C++23 standard modules on msvc
Diffstat (limited to 'tests/projects/c++/modules')
6 files changed, 16 insertions, 16 deletions
diff --git a/tests/projects/c++/modules/stdmodules/src/my_module.cpp b/tests/projects/c++/modules/stdmodules/src/my_module.cpp index 5264da821..b87808a6e 100644 --- a/tests/projects/c++/modules/stdmodules/src/my_module.cpp +++ b/tests/projects/c++/modules/stdmodules/src/my_module.cpp @@ -1,9 +1,5 @@ module my_module; -#ifdef _MSC_VER -import std.core; -#else import std; -#endif auto my_sum(size_t a, size_t b) -> size_t { return a + b; } diff --git a/tests/projects/c++/modules/stdmodules/src/my_module.mpp b/tests/projects/c++/modules/stdmodules/src/my_module.mpp index 5c0e44bc9..bbebb2766 100644 --- a/tests/projects/c++/modules/stdmodules/src/my_module.mpp +++ b/tests/projects/c++/modules/stdmodules/src/my_module.mpp @@ -1,9 +1,5 @@ export module my_module; -#ifdef _MSC_VER -import std.core; -#else import std; -#endif export auto my_sum(size_t a, size_t b) -> size_t; diff --git a/tests/projects/c++/modules/stdmodules/test.lua b/tests/projects/c++/modules/stdmodules/test.lua new file mode 100644 index 000000000..0657ead56 --- /dev/null +++ b/tests/projects/c++/modules/stdmodules/test.lua @@ -0,0 +1 @@ +inherit(".test_msvc") diff --git a/tests/projects/c++/modules/stdmodules/test/test.cpp b/tests/projects/c++/modules/stdmodules/test/test.cpp index a12813c24..7c6f7b4df 100644 --- a/tests/projects/c++/modules/stdmodules/test/test.cpp +++ b/tests/projects/c++/modules/stdmodules/test/test.cpp @@ -1,8 +1,4 @@ -#ifdef _MSC_VER -import std.core; -#else import std; -#endif import my_module; diff --git a/tests/projects/c++/modules/stdmodules/xmake.lua b/tests/projects/c++/modules/stdmodules/xmake.lua index ffe2d015b..85e738d14 100644 --- a/tests/projects/c++/modules/stdmodules/xmake.lua +++ b/tests/projects/c++/modules/stdmodules/xmake.lua @@ -1,10 +1,11 @@ add_rules("mode.debug", "mode.release") -set_languages("c++20") add_cxxflags("clang::-stdlib=libc++") +set_languages("c++latest") + target("mod") - set_kind("shared") + set_kind("static") add_files("src/*.cpp", "src/*.mpp") target("test") diff --git a/tests/projects/c++/modules/test_msvc.lua b/tests/projects/c++/modules/test_msvc.lua index d51d3e3ef..a436b5814 100644 --- a/tests/projects/c++/modules/test_msvc.lua +++ b/tests/projects/c++/modules/test_msvc.lua @@ -1,5 +1,6 @@ import("lib.detect.find_tool") import("core.base.semver") +import("core.tool.toolchain") function _build() local ci = (os.getenv("CI") or os.getenv("GITHUB_ACTIONS") or ""):lower() @@ -12,7 +13,16 @@ end function main(t) if is_subhost("windows") then - os.exec("xmake f -c") - _build() + local msvc = toolchain.load("msvc") + if msvc and msvc:check() then + local vcvars = msvc:config("vcvars") + if vcvars and vcvars.VCInstallDir and vcvars.VCToolsVersion and semver.compare(vcvars.VCToolsVersion, "14.35") then + local stdmodulesdir = path.join(vcvars.VCInstallDir, "Tools", "MSVC", vcvars.VCToolsVersion, "modules") + if os.isdir(stdmodulesdir) then + os.exec("xmake f -c") + _build() + end + end + end end end |
