如何分发 C++ 模块?

flo*_*wit 10 c++ c++20 c++-modules

使用“旧”C++ 编译模型组织和构建项目通常遵循一些常见做法:

  • 将您的公共标题放在一个include目录中。
  • 将实现和私有头文件放在一个src目录中
  • 从你的来源编译一个库
  • 将库(静态或动态)与公共头文件一起分发

当然,有许多不同的方法可以实现这一点,但这里的要点是:您将库二进制文件和公共标头作为纯文本分发。

现在有了模块,编译模型可以发生巨大的变化。但到目前为止我发现的一切都只解释了如何在封闭的项目中使用模块 - 没有分发,没有外部依赖。

现在可以将属于特定模块的所有内容放在单个文件中(这会有一些好处,例如避免重复声明)。这就提出了一个问题:我必须分发什么才能让其他人使用我的图书馆?我可以保密哪些部分?也许这可以通过实施单位解决?