C++ Modules Usage & Examples
Introduction
Xmake uses .mpp as the default module extension, but also supports .ixx, .cppm, .mxx, etc. It fully supports C++20 Modules with gcc11/clang/msvc, and can automatically analyze module dependencies for maximum parallel compilation.
Basic Example
Class Example
Exporting classes in modules:
Module Partitions
Using module partitions:
Shared Library Modules
Creating a shared library with modules:
Cross-Target Dependency
Modules dependency between targets:
Private Module Fragment
Using private module fragment to hide implementation details:
Module Implementation Unit
Separating module interface and implementation:
Module Aggregation
Using export import to aggregate submodules:
Cpp-only Project with Modules
From v2.7.1, Headerunits are supported. Normally, at least one .mpp file is needed to enable modules, but you can also force it:
Headerunits Example
See headerunits example for how to use STL or custom headers as headerunits.
C++23 Standard Library Modules
Support for C++23 stdmodules:
Module Package Distribution
Define and distribute a C++ Modules package:
Module Package Integration
Quickly integrate with add_requires("foo"):
More official examples: C++ Modules Examples