使用“旧”C++ 编译模型组织和构建项目通常遵循一些常见做法:
- 将您的公共标头放在一个
include
目录中。 - 将实现和私有头文件放在一个
src
目录中 - 从您的源代码编译库
- 将库(静态或动态)与公共标头一起分发
当然,有很多不同的方法可以实现这一点,但这里的要点是:您将库二进制文件和公共标头作为纯文本分发。
现在有了模块,编译模型可以发生巨大变化。但到目前为止我发现的所有内容都只解释了如何在封闭项目中使用模块——没有分发,没有外部依赖项。
现在可以将属于特定模块的所有内容放在一个文件中(这将有一些很好的好处,例如避免重复声明)。这就提出了一个问题:我必须分发什么才能让其他人使用我的库?哪些部分可以保密?也许这可以通过实施单元解决?