C++ 无法导入子模块

C++ 无法导入子模块,c++,clang++,c++-modules,C++,Clang++,C++ Modules,在clangversion6.0.0(tags/RELEASE\u600/final)上,我无法导入std子模块,如std.vector。整个import std工作正常,但import std.vector不能。我正在使用libc++modulemap来正确定义这个模块 编辑 自定义模块映射也存在同样的问题 module test { explicit module sub { header "test.hpp" export * } } 它无法加载模块test.su

clangversion6.0.0(tags/RELEASE\u600/final)
上,我无法导入
std
子模块,如
std.vector
。整个
import std
工作正常,但
import std.vector
不能。我正在使用
libc++
modulemap来正确定义这个模块

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

module test {
  explicit module sub {
    header "test.hpp"
    export *
  }
}
它无法加载模块
test.sub
,但报告可以在其中找到符号
foo

编辑2
clang5.0.2
的行为方式相同

编辑3
6.0.1-rc1
相同


是否存在与此相关的任何问题,或者是否有信息表明它还不受支持?

对于导入模块或子模块,clang 6并非在任何地方都能完美工作,clang 7将在将来得到改进

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

在Clang7文档中,您可以练习创建自己的模块,以包含一些头并导出它们,然后导入自己的模块。如文档所述,它现在不稳定。你需要试试


至少现在,您可以使用
import std
作为临时解决方法

你应该能够导入这些模块吗?Clang是否实施了这样的支持?是否有一个标准定义了标准库的模块化方式?@Nicolas是的,它以ISO/IEC TS 21544:2018的形式发布,问题是clang拒绝为这些子模块添加find,因为TS没有模块化标准库;它仅仅定义了模块作为一个特性是如何工作的。这不是std库如何模块化的问题,而是如何推动clang导入子模块。我的问题是
std.vector
是否实际上是clang实现中存在的模块。Thx,对于编辑1示例,仅创建了
test-2ZVJ6VLHGNNX8.pcm
文件。问题是我试图用modulemap文件模块化某些库,但它包括
。编译器将其转换为导入std.alhotithm,但失败了。我想这个链接会给您一些提示:那么,仍然没有导入