如何分发C++20模块?

7uhlpewt  于 2023-01-15  发布在  其他
关注(0)|答案(1)|浏览(173)

所有关于模块的文献都是最近才出现的,我正在为一个核心概念而挣扎。
当我制作自己的模块时,在链接过程之后,是否存在一种 * 传统 * 或 * 公认 * 的方式来打包这些模块,以便将它们作为库分发?

8yparm6h

8yparm6h1#

一般来说,构建模块接口的产品(不同于编译的链接器产品,如静态/共享库)在编译器之间是不可共享的。至少在相同操作系统/平台上编译的库是不可共享的。编译的模块格式是编译器特定的,甚至在同一个编译器的版本之间可能不稳定。
因此,如果你想发布一个使用模块构建的预编译库,那么就像非模块构建一样,你需要发布用于使用该模块的文本文件。具体来说,你需要内置到库中的任何模块的所有接口单元。实现单元不需要给出。因为它们的产品都是库的编译形式(除非它们是接口单元所包括的实现分区)。
也许在将来,同一平台的编译器会标准化一个编译的模块格式,甚至跨平台,但在那之前,你必须保持文本与你的预编译库一起发布。

相关问题