cxx-modules.md 2.7 KB

C++ Modules 使用与示例 {#cxx-modules}

基础介绍 {#introduction}

Xmake 采用 .mpp 作为默认的模块扩展名,同时也支持 .ixx.cppm.mxx 等。已完整支持 gcc11/clang/msvc 的 C++20 Modules 构建,并能自动分析模块间依赖,实现最大化并行编译。

基础示例 {#basic-example}

模块类导出示例 {#class-example}

在模块中导出类:

模块分区示例 {#partition-example}

使用模块分区(Module Partitions):

动态库模块示例 {#shared-library-example}

创建带有模块的动态库:

跨目标依赖示例 {#cross-target-example}

Target 之间的模块依赖:

模块私有片段示例 {#private-fragment-example}

使用模块私有片段(Private Module Fragment)隐藏实现细节:

模块实现单元示例 {#implementation-unit-example}

分离模块接口和实现(Module Implementation Unit):

模块聚合示例 {#aggregation-example}

使用 export import 聚合子模块:

仅 Cpp 工程启用 Modules {#cpp-only-example}

v2.7.1 起支持 Headerunits,可在模块中引入 STL 和用户头文件模块。通常需至少有一个 .mpp 文件才会启用 modules 编译,但也可通过配置强制启用:

Headerunits 示例 {#headerunits-example}

如何将 STL 或自定义头文件作为 headerunit 引入模块,见下面的示例:

C++23 标准库模块 {#stdmodules-example}

支持 C++23 标准库模块(stdmodules):

模块包分发 {#distribution-example}

定义和分发 C++ Modules 包:

模块包集成 {#integration-example}

通过 add_requires("foo") 快速集成:

更多官方示例见:C++ Modules 示例集