Clangd в режиме CUDA считает стандартную библиотеку C++ на стороне хоста недоступной (ошибки std::format, Chronic, iostrC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Clangd в режиме CUDA считает стандартную библиотеку C++ на стороне хоста недоступной (ошибки std::format, Chronic, iostr

Сообщение Anonymous »

Проблема
Я пытаюсь использовать clangd для LSP в Neovim с файлами CUDA .cu, но он не может распознать стандартные функции библиотеки C++ на стороне хоста. Даже простые функции хоста, использующие std::format, std::chrono или std::cout, выдают такие ошибки, как:
No member named 'format' in namespace 'std'
Invalid operands to binary expression ('ostream' (aka 'int') and 'const char[18]')
static assertion failed: duration must be a specialization of std::chrono::duration

Базовый пример
file.cu:
#include
#include
#include

int main() {
std::cout &1 | head -n 5
# Output shows /usr/include/c++/15.2.1/format is found


[*]Проверил, что compile_commands.json существует.

[*]Использовал --query-driver в настройке lspconfig:
cmd = { "clangd", "--query-driver=/usr/sbin/g++,/opt/cuda/bin/nvcc" }


[/list]
Похоже, что ничего из вышеперечисленного не решило проблему.
Среда
  • ОС: Arch Linux
  • Версия clangd: 21.1.0
  • Версия GCC: 15.2.1
  • Набор инструментов CUDA: 13.0.88
  • Архитектура графического процессора: sm_120 (NVIDIA Blackwell)
  • Редактор: Neovim с nvim-lspconfig
Вопрос
Есть ли способ настроить clangd для правильного анализа кода C++ на стороне хоста в файлах .cu?
Дополнительная информация
  • Мой проект cmake уже настроен для использования C++20, поэтому добавление -std=c++20 не помогает, потому что оно не имеет никакого эффекта.
  • Добавление этого в файл конфигурации тоже не помогает
- -std=c++20
- --gcc-toolchain=/usr
  • Я полагаю, что это сообщение от clangd является основной причиной того, что он выделяет std с некоторыми странными ошибками
[ERROR] ...p/_transport.lua:36 "rpc" "clangd" "stderr" "I[19:56:40.776] Indexed c++20 standard library (incomplete due to errors): 16085 symbols, 18320 filtered\n"


Подробнее здесь: https://stackoverflow.com/questions/798 ... lable-stdf
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»