是 gcc/clang 还不支持模块分区分成接口和实现两部分,还是 xmake 的 bug? #7303
Answered
by
waruqi
githubnotebooks
asked this question in
Q&A
-
|
模块分区的接口文件:math.cppm export module base:math;
export namespace base::math
{
int add(int, int);
int sub(int, int);
int mul(int, int);
} // namespace base::math模块分区的实现文件:math.cpp module base:math;
namespace base::math
{
int add(int x, int y)
{
return x + y;
}
int sub(int x, int y)
{
return x - y;
}
int mul(int x, int y)
{
return x * y;
}
} // namespace base::mathxmake 构建脚本:xmake.lua target("base", function()
set_kind("static")
add_files("**.cpp")
add_files("**.cppm", { public = true })
end)xmake 构建报错: error: @programdir/core/main.lua:272: @programdir/actions/build/main.lua:160: @programdir/modules/async/runjobs.lua:390: @programdir/rules/c++/modules/mapper.lua:60: duplicate module name detected for "base:math"
<base> -> base/math.cpp
<base> -> base/math.cppm
stack traceback:
[C]: in function 'error'
[@programdir/core/base/os.lua:1093]:
[@programdir/rules/c++/modules/mapper.lua:60]: in function 'feed'
[@programdir/rules/c++/modules/scanner.lua:441]: in function '_do_computedag'
[@programdir/rules/c++/modules/scanner.lua:587]: in function 'job_func'
[@programdir/modules/async/runjobs.lua:206]:
stack traceback:
[C]: in function 'error'
@programdir/core/base/os.lua:1093: in function 'os.raiselevel'
(...tail calls...)
@programdir/core/main.lua:272: in upvalue 'cotask'
@programdir/core/base/scheduler.lua:514: in function <@programdir/core/base/scheduler.lua:507>上述代码在 Visual Studio 2022 中是可以构建成功的,在 linux 环境 gcc/clang 工具链下都报告这个错误。 xmake 版本: ❯ xmake --version
xmake v3.0.4+19800101, A cross-platform build utility based on Lua |
Beta Was this translation helpful? Give feedback.
Answered by
waruqi
Feb 7, 2026
Replies: 1 comment
-
|
这是 msvc 扩展,不是标准 |
Beta Was this translation helpful? Give feedback.
0 replies
Answer selected by
githubnotebooks
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
这是 msvc 扩展,不是标准
#6401 (comment)