diff options
| author | ruki <[email protected]> | 2024-02-18 21:41:52 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2024-02-18 21:41:52 +0800 |
| commit | 3c1163b36e0817dbd5b62ec1ff495dc2e830d6ac (patch) | |
| tree | 16f6cb664c031d80b1841e6978fc1d8753eb6761 /tests/projects/c++/modules/packages | |
| parent | cda48025005f9aa23bdd582e29bb0f1f1ca24d27 (diff) | |
| parent | bc1a30db6041c2c14ca79ccf0aa35b2d550e64e5 (diff) | |
Merge pull request #4673 from xmake-io/modules
Refactor modules support
Diffstat (limited to 'tests/projects/c++/modules/packages')
12 files changed, 54 insertions, 12 deletions
diff --git a/tests/projects/c++/modules/packages/my-repo/packages/b/bar/src/bar.cpp b/tests/projects/c++/modules/packages/my-repo/packages/b/bar/src/bar.cpp index 5bbb5e5c1..279541ed0 100644 --- a/tests/projects/c++/modules/packages/my-repo/packages/b/bar/src/bar.cpp +++ b/tests/projects/c++/modules/packages/my-repo/packages/b/bar/src/bar.cpp @@ -1,5 +1,5 @@ -module bar; +#include <a.hpp> -const char *bar() { +const char *hello() { return "Hello world"; -}
\ No newline at end of file +} diff --git a/tests/projects/c++/modules/packages/my-repo/packages/b/bar/src/bar.mpp b/tests/projects/c++/modules/packages/my-repo/packages/b/bar/src/bar.mpp index a13487fea..48ed6b73b 100644 --- a/tests/projects/c++/modules/packages/my-repo/packages/b/bar/src/bar.mpp +++ b/tests/projects/c++/modules/packages/my-repo/packages/b/bar/src/bar.mpp @@ -1,3 +1,12 @@ +module; + +#include <a.hpp> + export module bar; -export const char *bar();
\ No newline at end of file +export namespace bar { +const char *hello() { + return ::hello(); +} +} + diff --git a/tests/projects/c++/modules/packages/my-repo/packages/b/bar/src/include/a.hpp b/tests/projects/c++/modules/packages/my-repo/packages/b/bar/src/include/a.hpp new file mode 100644 index 000000000..7cd8caadb --- /dev/null +++ b/tests/projects/c++/modules/packages/my-repo/packages/b/bar/src/include/a.hpp @@ -0,0 +1,6 @@ +#ifndef A_HPP +#define A_HPP + +[[gnu::visibility("default")]] const char *hello(); + +#endif diff --git a/tests/projects/c++/modules/packages/my-repo/packages/b/bar/src/xmake.lua b/tests/projects/c++/modules/packages/my-repo/packages/b/bar/src/xmake.lua index 345dd2db4..d11bc4f60 100644 --- a/tests/projects/c++/modules/packages/my-repo/packages/b/bar/src/xmake.lua +++ b/tests/projects/c++/modules/packages/my-repo/packages/b/bar/src/xmake.lua @@ -3,5 +3,7 @@ set_languages("c++20") target("bar") set_kind("static") + add_headerfiles("include/(**.hpp)") + add_includedirs("include") add_files("*.cpp") - add_files("*.mpp", { install = true }) + add_files("*.mpp", { public = true }) diff --git a/tests/projects/c++/modules/packages/my-repo/packages/b/bar/xmake.lua b/tests/projects/c++/modules/packages/my-repo/packages/b/bar/xmake.lua index 301166807..1592fc623 100644 --- a/tests/projects/c++/modules/packages/my-repo/packages/b/bar/xmake.lua +++ b/tests/projects/c++/modules/packages/my-repo/packages/b/bar/xmake.lua @@ -3,4 +3,4 @@ package("bar") on_install(function(package) import("package.tools.xmake").install(package, {}) - end)
\ No newline at end of file + end) diff --git a/tests/projects/c++/modules/packages/my-repo/packages/b/bar2/src/bar.mpp b/tests/projects/c++/modules/packages/my-repo/packages/b/bar2/src/bar.mpp new file mode 100644 index 000000000..ee9fb2c78 --- /dev/null +++ b/tests/projects/c++/modules/packages/my-repo/packages/b/bar2/src/bar.mpp @@ -0,0 +1,8 @@ +export module bar2; + +export namespace bar { + const char *hello2() { + return "Hello world"; + } +} + diff --git a/tests/projects/c++/modules/packages/my-repo/packages/b/bar2/src/xmake.lua b/tests/projects/c++/modules/packages/my-repo/packages/b/bar2/src/xmake.lua new file mode 100644 index 000000000..0324fa931 --- /dev/null +++ b/tests/projects/c++/modules/packages/my-repo/packages/b/bar2/src/xmake.lua @@ -0,0 +1,6 @@ +add_rules("mode.release", "mode.debug") +set_languages("c++20") + +target("bar2") + set_kind("moduleonly") + add_files("*.mpp") diff --git a/tests/projects/c++/modules/packages/my-repo/packages/b/bar2/xmake.lua b/tests/projects/c++/modules/packages/my-repo/packages/b/bar2/xmake.lua new file mode 100644 index 000000000..ffa208234 --- /dev/null +++ b/tests/projects/c++/modules/packages/my-repo/packages/b/bar2/xmake.lua @@ -0,0 +1,7 @@ +package("bar2") + set_kind("library") + set_sourcedir(path.join(os.scriptdir(), "src")) + + on_install(function(package) + import("package.tools.xmake").install(package, {}) + end) diff --git a/tests/projects/c++/modules/packages/my-repo/packages/f/foo/src/foo.mpp b/tests/projects/c++/modules/packages/my-repo/packages/f/foo/src/foo.mpp index 4cab3d977..a97f3d62b 100644 --- a/tests/projects/c++/modules/packages/my-repo/packages/f/foo/src/foo.mpp +++ b/tests/projects/c++/modules/packages/my-repo/packages/f/foo/src/foo.mpp @@ -1,5 +1,7 @@ export module foo; export namespace foo { + #ifdef FOO_EXPORT void say(const char *); -}
\ No newline at end of file + #endif +} diff --git a/tests/projects/c++/modules/packages/my-repo/packages/f/foo/src/xmake.lua b/tests/projects/c++/modules/packages/my-repo/packages/f/foo/src/xmake.lua index d79b2ac54..9fa37e1d7 100644 --- a/tests/projects/c++/modules/packages/my-repo/packages/f/foo/src/xmake.lua +++ b/tests/projects/c++/modules/packages/my-repo/packages/f/foo/src/xmake.lua @@ -4,4 +4,4 @@ set_languages("c++20") target("foo") set_kind("static") add_files("*.cpp") - add_files("*.mpp", { install = true }) + add_files("*.mpp", {defines = "FOO_EXPORT", public = true}) diff --git a/tests/projects/c++/modules/packages/src/main.cpp b/tests/projects/c++/modules/packages/src/main.cpp index 10c501c4a..d6f2218c0 100644 --- a/tests/projects/c++/modules/packages/src/main.cpp +++ b/tests/projects/c++/modules/packages/src/main.cpp @@ -1,7 +1,9 @@ import foo; import bar; +import bar2; int main() { - foo::say(bar()); + foo::say(bar::hello()); + foo::say(bar::hello2()); return 0; } diff --git a/tests/projects/c++/modules/packages/xmake.lua b/tests/projects/c++/modules/packages/xmake.lua index fe3cc7dc5..62dba119b 100644 --- a/tests/projects/c++/modules/packages/xmake.lua +++ b/tests/projects/c++/modules/packages/xmake.lua @@ -1,11 +1,11 @@ add_rules("mode.release", "mode.debug") -set_languages("c++20") +set_languages("c++2b") add_repositories("my-repo my-repo") -add_requires("foo", "bar") +add_requires("foo", "bar", "bar2") target("packages") set_kind("binary") add_files("src/*.cpp") - add_packages("foo", "bar") + add_packages("foo", "bar", "bar2") set_policy("build.c++.modules", true) |
