无法导入子模块

Can not import submodule

本文关键字:模块 导入      更新时间:2023-10-16

clang version 6.0.0 (tags/RELEASE_600/final)上,我无法导入std子模块,如std.vector。整个import std工作正常,但import std.vector不是。我正在使用正确定义此模块libc++模块映射。

编辑

自定义模块映射也存在同样的问题

module test {
explicit module sub {
header "test.hpp"
export *
}
}

它无法加载模块test.sub但报告可以在其中找到符号foo

编辑 2

clang 5.0.2的行为方式相同。

编辑 3

6.0.1-rc1相同

是否有任何问题与此相关或尚不支持的确认?

对于导入模块或子模块,clang 6 并非在所有地方都能完美运行,clang 7 将来会得到改进。

您可以尝试显式设置-fmodules-cache-path=<your-cache-path>标志,您可以看到,如果构建中涉及某些模块,则 clang 将在构建时填充预编译的模块文件(通常*.pcm(。

在 clang 7 文档中,您可以练习模块映射语言来创建自己的模块以包含一些标头并导出它们,然后导入您自己的模块。正如文档所述,它现在不稳定。你需要尝试。

至少目前您可以使用import std作为临时解决方法。