cxx-modules.md 2.4 KB

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