main.cpp:
Код: Выделить всё
import math;
import ;
int main() {
constexpr int lhs = 2400;
constexpr int rhs = 98;
const int sum = add(lhs, rhs);
std::println("{} + {} = {}", lhs, rhs, sum);
}
< /code>
math.cppm:
export module math;
export int add(const int lhs, const int rhs) {
return lhs + rhs;
}
< /code>
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}
)
< /code>
Все было хорошо, пока я не хотел добавить завершение кода в свой проект. Чтобы включить завершение кода, я использую языковой сервер Clangd (версия 19.1.7). Он прекрасно работает с модулями в большинстве аспектов, кроме одной вещи: когда я пытаюсь импортировать стандартный заголовок библиотеки (независимо от того, использую ли я старый #include clang
- .
Код: Выделить всё
-fbuiltin-module-map; < /li> -fimplicit-module-map; < /li> -fmodule-header; < /li> -fprebuilt-module-path=< /code>. < /li> < /ul> и следующие флаги в Clangd: < /p> --experimental-modules-support
Arch: Arm64-Apple-Darwin24.2.0 (Apple M1); < /li>
Clang: Homebrew Clang Version 19.1.7 < /li>
clangd: homebrew glangd версии 19.7 < /li>
clangd: homebrew glangd. 3.31.4
Подробнее здесь: https://stackoverflow.com/questions/793 ... 20-modules
Мобильная версия