Skip to content

Commit bae1ada

Browse files
committed
[docs] [C++20] [Modules] Document how to import modules in clang-repl
We support to import C++20 named modules now in in clang-repl in dd3e6c8. Then we should document how can we do that.
1 parent 11ca56e commit bae1ada

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

clang/docs/StandardCPlusPlusModules.rst

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1213,6 +1213,45 @@ instead a real binary. There are 4 potential solutions to the problem:
12131213
$ clang-scan-deps -format=p1689 -- <path-to-compiler-executable>/clang++ -std=c++20 -resource-dir <resource-dir> mod.cppm -c -o mod.o
12141214
12151215
1216+
Import modules with clang-repl
1217+
==============================
1218+
1219+
We're able to import C++20 named modules with clang-repl.
1220+
1221+
Let's start with a simple example:
1222+
1223+
.. code-block:: c++
1224+
1225+
// M.cppm
1226+
export module M;
1227+
export const char* Hello() {
1228+
return "Hello Interpreter for Modules!";
1229+
}
1230+
1231+
We still need to compile the named module in ahead.
1232+
1233+
.. code-block:: console
1234+
1235+
$ clang++ -std=c++20 M.cppm --precompile -o M.pcm
1236+
$ clang++ M.pcm -c -o M.o
1237+
$ clang++ -shared M.o -o libM.so
1238+
1239+
Note that we need to compile the module unit into a dynamic library so that the clang-repl
1240+
can load the object files of the module units.
1241+
1242+
Then we are able to import module ``M`` in clang-repl.
1243+
1244+
.. code-block:: console
1245+
1246+
$ clang-repl -Xcc=-std=c++20 -Xcc=-fprebuilt-module-path=.
1247+
# We need to load the dynamic library first before importing the modules.
1248+
clang-repl> %lib libM.so
1249+
clang-repl> import M;
1250+
clang-repl> extern "C" int printf(const char *, ...);
1251+
clang-repl> printf("%s\n", Hello());
1252+
Hello Interpreter for Modules!
1253+
clang-repl> %quit
1254+
12161255
Possible Questions
12171256
==================
12181257

0 commit comments

Comments
 (0)