NOTE: this master
branch contains examples of header units and uses import
instead of #include
for headers in examples of named modules. As a result,
these examples currently can only be built with GCC. See the named-only
branch for a subset of examples that only cover named modules and that have
been modified to #include
instead of import
headers in order to be usable
with other compilers (Clang, MSVC). See also the named-only-import-std
branch which rather does import std
.
This repository contains a number of examples that demonstrate various C++20
modules features and their support in build2
. For a discussion of the
demonstrated functionality see Complete C++20 Modules Support with
GCC.
Note: requires GCC 12 or later.
hello-module
-- module example
hello-partition
-- module partition example
hello-header-import
-- header unit importation example
hello-header-translate
-- header include translation example
hello-library-module
-- module library example
hello-library-header
-- header importation/translation library example
hello-utility-library-module
-- module utility library example
hello-simple
-- module example as build2
simple project
While you can build each example individually (see README
in each example
for details), you can also build them all (except for hello-simple
) at once
in a shared build configuration, for example:
git clone https://github.com/build2/cxx20-modules-examples.git
cd cxx20-modules-examples
bdep init -C @gcc cc config.cxx=g++ config.cxx.translate_include=all-importable
bdep update @gcc