Modules for CPP

2023-11-19
1分钟阅读时长

GCC

GCC 13 支持 p1689 特性,但是与 cmake 配合尚存在一定问题。

Clang

Clang 16 支持 p1689 特性,且可以直接与 cmake 配合使用。

注意:

  1. 模块特性尚处于实验状态,需要开启对应的 cmake 版本的 API。
  2. 目前测试情况是需要将模块编译成库进行链接,但不必一定是共享库。
  cmake_minimum_required(VERSION 3.27)
  project(learnCPP20)

  set(CMAKE_CXX_STANDARD 20)
  set(CMAKE_CXX_EXTENSIONS OFF)

  set(CMAKE_EXPERIMENTAL_CXX_MODULE_CMAKE_API "aa1f7df0-828a-4fcd-9afc-2dc80491aca7")
  set(CMAKE_EXPERIMENTAL_CXX_MODULE_DYNDEP 1)

  add_library(employee_lib SHARED)
  target_sources(employee_lib
          PUBLIC
          FILE_SET cxx_modules TYPE CXX_MODULES FILES
          src/employee.cppm
  )

  add_executable(learnCPP20
      src/employee.cpp
  )
下一页 Compare