首先需要指定cmake的最低版本为3.28(3.28才支持扫描模块)

1
2
cmake_minimum_required(VERSION 3.28)
project(untitle)

然后需要设置C++的标准为C++20(C++20才有模块),并启用了对C++模块的支持。

1
2
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_SCAN_FOR_MODULES ON)

创建了一个名为simple_module的库。

1
2
add_library(simple_module
)

将几个.cppm文件作为C++模块添加到simple_module库中。
1
2
3
4
5
6
7
target_sources(simple_module
PUBLIC
FILE_SET CXX_MODULES FILES
simple.cppm
simpe_1.cppm
simple_2.cppm
)

这行代码创建了一个名为untitled1的可执行文件,其主文件为main.cpp

1
add_executable(untitled1 main.cpp)

最后,将simple_module库链接到untitled1可执行文件。

1
target_link_libraries(untitled1 simple_module)

完整代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
cmake_minimum_required(VERSION 3.28)
project(untitled1)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_SCAN_FOR_MODULES ON)

add_library(simple_module
)

target_sources(simple_module
PUBLIC
FILE_SET CXX_MODULES FILES
simple.cppm
simpe_1.cppm
simple_2.cppm
)

add_executable(untitled1 main.cpp)

target_link_libraries(untitled1 simple_module)

注意,编译器需要支持对模块的扫描