You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Clangd 19.1.7是否支持C++20模块?标准库导入报错求解决

基于C++23模块的项目中Clangd标准库模块报错问题

项目代码

main.cpp

import math;

import <print>;

int main() {
    constexpr int lhs = 2400;
    constexpr int rhs = 98;
    const int sum = add(lhs, rhs);

    std::println("{} + {} = {}", lhs, rhs, sum);
}

math.cppm

export module math;

export int add(const int lhs, const int rhs) {
    return lhs + rhs;
}

CMakeLists.txt

cmake_minimum_required(VERSION 3.31)

project(
    "Test"
    VERSION 0.1.0
    LANGUAGES CXX
)

set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
set(CMAKE_CXX_EXTENSIONS FALSE)

add_compile_options(-fmodules -Wall -Wextra -Wpedantic)

add_executable(test ./src/main.cpp)

file(GLOB_RECURSE modules CONFIGURE_DEPENDS ./src/*.cppm)

target_sources(
    test
    PRIVATE FILE_SET CXX_MODULES FILES ${modules}
)

问题描述

项目通过CMake构建完全正常,但启用Clangd 19.1.7的代码补全功能时,导入标准库头文件(无论是#include <...>还是import <...>语法)都会触发报错:Could not build module 'std_print' clang (module_not_built)。

已尝试的操作

  • 添加以下Clang编译参数:
    • -fbuiltin-module-map
    • -fimplicit-module-map
    • -fmodule-header
    • -fprebuilt-module-path=<path/to/libc++/module.modulemap>
  • 添加Clangd参数:--experimental-modules-support
  • 将Clangd日志级别设置为verbose,但未定位到报错原因

环境信息

  • 操作系统:macOS 15.2
  • 架构:arm64-apple-darwin24.2.0(Apple M1)
  • Clang:Homebrew clang version 19.1.7
  • Clangd:Homebrew clangd version 19.1.7
  • CMake:3.31.4

提问

如何在Clangd中正确启用C++20模块支持?当前版本是否可行?

内容的提问来源于stack exchange,提问作者Maksim Victorovich Fomin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 18:13:24