C++ Modules 使用与示例
基础介绍
Xmake 采用 .mpp 作为默认的模块扩展名,同时也支持 .ixx、.cppm、.mxx 等。已完整支持 gcc11/clang/msvc 的 C++20 Modules 构建,并能自动分析模块间依赖,实现最大化并行编译。
基础示例
xmake.lua
模块类导出示例
在模块中导出类:
xmake.lua
模块分区示例
使用模块分区(Module Partitions):
xmake.lua
动态库模块示例
创建带有模块的动态库:
xmake.lua
跨目标依赖示例
Target 之间的模块依赖:
xmake.lua
模块私有片段示例
使用模块私有片段(Private Module Fragment)隐藏实现细节:
xmake.lua
模块实现单元示例
分离模块接口和实现(Module Implementation Unit):
xmake.lua
模块聚合示例
使用 export import 聚合子模块:
xmake.lua
仅 Cpp 工程启用 Modules
v2.7.1 起支持 Headerunits,可在模块中引入 STL 和用户头文件模块。通常需至少有一个 .mpp 文件才会启用 modules 编译,但也可通过配置强制启用:
xmake.lua
Headerunits 示例
如何将 STL 或自定义头文件作为 headerunit 引入模块,见下面的示例:
xmake.lua
C++23 标准库模块
支持 C++23 标准库模块(stdmodules):
xmake.lua
模块包分发
定义和分发 C++ Modules 包:
xmake.lua
模块包集成
通过 add_requires("foo") 快速集成:
xmake.lua
更多官方示例见:C++ Modules 示例集