小编Qur*_*ube的帖子

使用 CMake 的实验性模块依赖扫描构建 C++ 模块

CMake 有实验性的 C++20 模块依赖扫描 ( !5562 )。我尝试使用 CMake 3.20、g++-11 和 ninja-1.10 来构建一个带有模块的项目。

// main.cpp
import mod;
int main() { return 0; }
Run Code Online (Sandbox Code Playgroud)
// mod.ixx
export module mod;
export void f() {}
Run Code Online (Sandbox Code Playgroud)

CMakeLists.txt 是对https://gitlab.kitware.com/ben.boeckel/cmake/blob/cpp-modules/Modules/Compiler/GNU-CXX.cmake的改编

cmake_minimum_required(VERSION 3.20)
project(simple)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_DEPFILE_FORMAT gcc)
set(CMAKE_CXX_DEPENDS_USE_COMPILER TRUE)

string(CONCAT CMAKE_EXPERIMENTAL_CXX_SCANDEP_SOURCE
        "<CMAKE_CXX_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -E -x c++ <SOURCE>"
        " -MT <DYNDEP_FILE> -MD -MF <DEP_FILE>"
        " -fmodules-ts -fdep-file=<DYNDEP_FILE> -fdep-output=<OBJECT>"
        " -fdep-format=trtbd")

set(CMAKE_EXPERIMENTAL_CXX_MODULE_MAP_FORMAT "gcc")

set(CMAKE_EXPERIMENTAL_CXX_MODULE_MAP_FLAG
        " -fmodules-ts -fmodule-mapper=<MODULE_MAP_FILE>"
        " -fdep-format=trtbd -x c++")

set(CMAKE_CXX_FLAGS "-fmodules-ts")
add_executable(simple main.cpp …
Run Code Online (Sandbox Code Playgroud)

c++ gcc cmake c++20 c++-modules

11
推荐指数
1
解决办法
997
查看次数

标签 统计

c++ ×1

c++-modules ×1

c++20 ×1

cmake ×1

gcc ×1