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
相关产品推荐
相关产品推荐

