diff options
| author | ruki <[email protected]> | 2025-12-28 20:31:13 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2025-12-29 00:09:39 +0800 |
| commit | bdfa86bccebb1bed6f3c7cec97db58d69ec44572 (patch) | |
| tree | 870f7980ac7db09a695125af5457aa9e706873a0 | |
| parent | efbe455bd1bbbd320174d36af99e95fb1628dfa5 (diff) | |
fix xmake test for std modules
| -rw-r--r-- | tests/projects/c++/modules/xmake_tests4/.gitignore | 4 | ||||
| -rw-r--r-- | tests/projects/c++/modules/xmake_tests4/src/main.cpp | 5 | ||||
| -rw-r--r-- | tests/projects/c++/modules/xmake_tests4/src/work.mpp | 14 | ||||
| -rw-r--r-- | tests/projects/c++/modules/xmake_tests4/test.lua | 1 | ||||
| -rw-r--r-- | tests/projects/c++/modules/xmake_tests4/test/test.cpp | 5 | ||||
| -rw-r--r-- | tests/projects/c++/modules/xmake_tests4/xmake.lua | 10 | ||||
| -rw-r--r-- | xmake/actions/test/main.lua | 2 | ||||
| -rw-r--r-- | xmake/core/sandbox/modules/import/core/project/project.lua | 37 | ||||
| -rw-r--r-- | xmake/modules/private/utils/target.lua | 39 |
9 files changed, 83 insertions, 34 deletions
diff --git a/tests/projects/c++/modules/xmake_tests4/.gitignore b/tests/projects/c++/modules/xmake_tests4/.gitignore new file mode 100644 index 000000000..9d988d246 --- /dev/null +++ b/tests/projects/c++/modules/xmake_tests4/.gitignore @@ -0,0 +1,4 @@ +.xmake/ +.vscode/ +build/ +uselocalxmake.sh diff --git a/tests/projects/c++/modules/xmake_tests4/src/main.cpp b/tests/projects/c++/modules/xmake_tests4/src/main.cpp new file mode 100644 index 000000000..45222c241 --- /dev/null +++ b/tests/projects/c++/modules/xmake_tests4/src/main.cpp @@ -0,0 +1,5 @@ +import work; + +int main() { + do_work<int>(); +} diff --git a/tests/projects/c++/modules/xmake_tests4/src/work.mpp b/tests/projects/c++/modules/xmake_tests4/src/work.mpp new file mode 100644 index 000000000..27b5f2089 --- /dev/null +++ b/tests/projects/c++/modules/xmake_tests4/src/work.mpp @@ -0,0 +1,14 @@ +export module work; +import std; + +export +template<typename T> +void do_work() { + if constexpr (std::is_same_v<T, int>) { + std::println("Hello world!"); + } else if constexpr (std::is_same_v<T, double>) { + std::println("Hello test!"); + } else { + std::println("Hello unknown type!"); + } +} diff --git a/tests/projects/c++/modules/xmake_tests4/test.lua b/tests/projects/c++/modules/xmake_tests4/test.lua new file mode 100644 index 000000000..25ca8a7a3 --- /dev/null +++ b/tests/projects/c++/modules/xmake_tests4/test.lua @@ -0,0 +1 @@ +inherit(".test_xmake_test") diff --git a/tests/projects/c++/modules/xmake_tests4/test/test.cpp b/tests/projects/c++/modules/xmake_tests4/test/test.cpp new file mode 100644 index 000000000..fae906e76 --- /dev/null +++ b/tests/projects/c++/modules/xmake_tests4/test/test.cpp @@ -0,0 +1,5 @@ +import work; + +int main() { + do_work<double>(); +} diff --git a/tests/projects/c++/modules/xmake_tests4/xmake.lua b/tests/projects/c++/modules/xmake_tests4/xmake.lua new file mode 100644 index 000000000..63a01661e --- /dev/null +++ b/tests/projects/c++/modules/xmake_tests4/xmake.lua @@ -0,0 +1,10 @@ +add_rules("mode.debug", "mode.release") +set_languages("c++23") +set_encodings("utf-8") +--add_rules("plugin.compile_commands.autoupdate", {outputdir = ".vscode"}) + +target("llvm") + set_kind("binary") + set_runtimes("c++_shared") + add_files("src/*.cpp", "src/*.mpp") + add_tests("test", { files = "test/test.cpp", remove_files = "src/main.cpp" }) diff --git a/xmake/actions/test/main.lua b/xmake/actions/test/main.lua index 0e7192d83..85866814a 100644 --- a/xmake/actions/test/main.lua +++ b/xmake/actions/test/main.lua @@ -31,6 +31,7 @@ import("private.action.run.runenvs") import("private.service.remote_build.action", {alias = "remote_build_action"}) import("actions.build.main", {rootdir = os.programdir(), alias = "build_action"}) import("utils.progress") +import("private.utils.target", {alias = "target_utils"}) -- test target function _do_test_target(target, opt) @@ -522,6 +523,7 @@ function get_tests() if extra.packages then target_new:add("packages", extra.packages) end + target_utils.config_target(target_new) testinfo.target = target_new end end diff --git a/xmake/core/sandbox/modules/import/core/project/project.lua b/xmake/core/sandbox/modules/import/core/project/project.lua index 8a808e7da..9b69349d0 100644 --- a/xmake/core/sandbox/modules/import/core/project/project.lua +++ b/xmake/core/sandbox/modules/import/core/project/project.lua @@ -127,41 +127,10 @@ function sandbox_core_project.check_options() end end --- config target -function sandbox_core_project._config_target(target, opt) - for _, rule in ipairs(table.wrap(target:orderules())) do - local before_config = rule:script("config_before") - if before_config then - before_config(target, opt) - end - end - - for _, rule in ipairs(table.wrap(target:orderules())) do - local on_config = rule:script("config") - if on_config then - on_config(target, opt) - end - end - local on_config = target:script("config") - if on_config then - on_config(target, opt) - end - - for _, rule in ipairs(table.wrap(target:orderules())) do - local after_config = rule:script("config_after") - if after_config then - after_config(target, opt) - end - end -end - +-- config targets function sandbox_core_project._config_targets(opt) - opt = opt or {} - for _, target in ipairs(table.wrap(project.ordertargets())) do - if target:is_enabled() then - sandbox_core_project._config_target(target, opt) - end - end + import("private.utils.target", {alias = "target_utils"}) + target_utils.config_targets(opt) end -- config targets diff --git a/xmake/modules/private/utils/target.lua b/xmake/modules/private/utils/target.lua index d06f1293c..728bd6016 100644 --- a/xmake/modules/private/utils/target.lua +++ b/xmake/modules/private/utils/target.lua @@ -50,6 +50,7 @@ end -- @see https://github.com/xmake-io/xmake/issues/3022 -- -- e.g. +-- -- for all: add_cxxflags("-g") -- only for clang: add_cxxflags("clang::-stdlib=libc++") -- only for clang and multiple flags: add_cxxflags("-stdlib=libc++", "-DFOO", {tools = "clang"}) @@ -104,6 +105,7 @@ function translate_flags_in_tool(target, flagkind, flags) -- @see https://github.com/xmake-io/xmake/issues/3022 -- -- e.g. + -- -- for all: add_cxxflags("-g") -- only for clang: add_cxxflags("clang::-stdlib=libc++") -- only for clang and multiple flags: add_cxxflags("-stdlib=libc++", "-DFOO", {tools = "clang"}) @@ -165,3 +167,40 @@ function check_target_toolchains() end end +-- config target +function config_target(target, opt) + for _, rule in ipairs(table.wrap(target:orderules())) do + local before_config = rule:script("config_before") + if before_config then + before_config(target, opt) + end + end + + for _, rule in ipairs(table.wrap(target:orderules())) do + local on_config = rule:script("config") + if on_config then + on_config(target, opt) + end + end + local on_config = target:script("config") + if on_config then + on_config(target, opt) + end + + for _, rule in ipairs(table.wrap(target:orderules())) do + local after_config = rule:script("config_after") + if after_config then + after_config(target, opt) + end + end +end + +-- config targets +function config_targets(opt) + opt = opt or {} + for _, target in ipairs(table.wrap(project.ordertargets())) do + if target:is_enabled() then + config_target(target, opt) + end + end +end |
