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?
Это НЕ дубликат связанного вопроса. Этот вопрос касается отсутствия поддержки C++20 в компиляторе. Моя проблема связана с clangd с файлами cuda, где он рассматривает весь код как на стороне устройства и игнорирует стандартную библиотеку C++ на стороне хоста. Код отлично компилируется с помощью nvcc, в файле compile_commands.json установлена ​​библиотека C++20.

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

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

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

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

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

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