IE盒子

搜索
查看: 123|回复: 1

译 | C++20 模块(module)状态汇报

[复制链接]

3

主题

5

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2022-9-22 04:23:56 | 显示全部楼层 |阅读模式
原文:C++20 Modules Status Report
译于 9 月 17 日,内容要是不同步提了提醒一下我 XD
<hr/>「我们什么时候可以开始用 module」?
本文档汇报了在 C++ 生态系统中,人们为使用 C++20 模块不断努力的状态,包括编译器、构建系统和(目前几乎不存在的)库。
这个文档引用了很多正在进行中的工作,所以很快就会过时——欢迎大家用 PR 更新和扩展这个文档。
编译器支持

MSVC

MSVC 有一个完整的模块实现,支持 C++23 import std 的工作正在这里进行。
这里有编译器模块 bug 报告列表。
GCC

GCC 有部分模块支持,但它似乎仍然有很多 bug,进展几乎停滞不前。这里有模块 paper 的状态,这里有当前实现中报告的错误列表。
Clang

Clang 支持 C++20 模块的工作进行中。这里有模块 paper 的状态,这里有模块相关 issues。
这个项目探索用 Clang 实现 libc++ 的模块化。
构建系统

CMake

CMake 最近取得了一些进展。这里有与模块相关的更改,这是 GitLab issue,有一些有趣的讨论。
最近的 talk 详细介绍了 CMake 模块支持的目标。
Bazel

这里有相关的 Bazel issue。
rules_ll 支持使用 Bazel + Clang 编译模块。这有另一个针对 Clang 的 Bazel 模块尝试。
MSBuild

(在 Visual Studio 里)应该可以。
Meson

这里有个很老的 blog。
Build2

自 2021 年初起,Build2 支持使用 GCC 构建模块。这篇 blog 详细介绍了使用方法,还有一个包含各种使用示例的 repository。
标准化

WG21 在「SG15」中讨论模块,SG15是委员会专门研究 C++ 工具的研究组。这里有他们的 mailing list。


fmtlib

fmtlib 支持模块,但只在 Windows 上有支持。
Boost

4 月份在他们的 mailing list 中有关于 boost 模块的讨论。目前在这方面似乎没有任何进展。
async_simple

这里有一个使用模块的开发分支,Clang 15 能用。
用例

LibTwo

LibTwo 用了些模块,特别是在这里将一些第三方依赖项作为模块导入。
HiveWE

开源项目 HiveWE 用了模块,还有一些实际的例子。
Blogs


  • C++20 modules with GCC11,作者 Niall Cooling
  • Moving a project to C++ named Modules,作者 Cameron DaCamara
  • C++20 modules with Clang,作者 Eduardo Costa
回复

使用道具 举报

5

主题

9

帖子

21

积分

新手上路

Rank: 1

积分
21
发表于 2025-2-6 12:57:01 | 显示全部楼层
呵呵。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表