Один из Потенциальные причины заключаются в том, что Clangd не проиндексировал все файлы в вашем проекте. Пожалуйста, убедитесь, что все файлы видны для Clangd через настройку проекта и Compile_commands.json. Просто путь к файлу CC указан явно где -то в файле JSON? (В этом случае это достигается) Файл создан как часть сборки. Некоторые сгенерированные исходные файлы не могут быть найдены, пока я не открываю их вручную с помощью моего редактора./my_repo/base/src/a.hh (объявляет get_bananas () )
[*]/my_repo/base/src/a.cc (определяет get_bananas () )
Некоторые файлы cc файлы генерируются на шаге сборки (Cmake+Ninja+Python) и положить в папку сборки: < /p>
- /my_repo/base/build/generated/gen_a_usage.cc (вызовы get_bananas () )
Как я могу выяснить, почему я Не можете найти gen_a_usage.cc? После того, как я открыл этот файл из папки сборки в моем редакторе, ссылки () Начните перечислять ссылки и в этом файле.
В действительности проект намного больше, чем Просто эти три файла. Оба a.cc имеют записи и gen_a_usage.cc есть записи в compile_commands.json файл. Сбой?{
"directory": "/my_repo/base/build",
"command": "clang-wrapper-19.1.1/bin/clang++ -I/my_repo/base/build/generated -I/my_repo/base/src -I... -isystem ... -Og -g -std=gnu++20 -fPIC -Wall -Wextra -Wformat-signedness -ggdb -fcolor-diagnostics -o CMakeFiles/objects.dir/src/a.cc.o -c /my_repo/base/src/a.cc",
"file": "/my_repo/base/src/a.cc",
"output": "CMakeFiles/objects.dir/src/a.cc.o"
},
{
"directory": "/my_repo/base/build",
"command": "clang-wrapper-19.1.1/bin/clang++ -I/my_repo/base/build/generated -I/my_repo/base/src -I... -isystem ... -Og -g -std=gnu++20 -fPIC -Wall -Wextra -Wformat-signedness -ggdb -fcolor-diagnostics -o CMakeFiles/objects.dir/src/gen_a_usage.cc.o -c /my_repo/base/build/generated/gen_a_usage.cc",
"file": "/my_repo/base/build/generated/gen_a_usage.cc",
"output": "CMakeFiles/objects.dir/src/gen_a_usage.cc.o"
},
< /code>
среда < /h1>
сборка осуществляется с помощью cmake + ninja < /li>
После Build Я запускаю мой редактор (neovim) < /li>
lsp (clangd) запускается с этой конфигурацией:
lsp.clangd.setup { cmd = {"clangd", "--clang-tidy", "--background-index", "--limit-references=0", "--cross-file-rename"}}
< /code>
< /li>
< /ul>
Я видел это поведение в Clangd версии 16, 19 и 20. и у моего коллега есть аналогичные проблемы в Vscode . < /p>
lsplog имеет эту информацию < /h1>
ASTWorker building file /my_repo/base/src/a.cc version 0 with command \n[/my_repo/base/build/generated -I/my_repo/base/src -I... -isystem ... -Og -g -std=gnu++20 -fPIC -Wall -Wextra -Wformat-signedness -ggdb -fcolor-diagnostics -o CMakeFiles/objects.dir/src/a.cc.o -c clang-19.1.1/lib/clang/19 -- /my_repo/base/src/a.cc\n"
Loaded compilation database from /my_repo/base/build/compile_commands.json\n"
--> window/workDoneProgress/create(0)\n"
Enqueueing 930 commands for indexing\n"
$/progress\nI[11:45:43.742] --> $/progress\n"
Built preamble of size 21624316 for file /my_repo/base/src/a.cc version 0 in 1.46 seconds\n"
--> workspace/semanticTokens/refresh(1)\n"
Indexing c++20 standard library in the context of /my_repo/base/src/a.cc\n"
reply:textDocument/references(2) 0 ms\n"
--> $/progress\n"
--> $/progress\nI[11:45:51.571] --> $/progress\nI[11:45:51.571] --> $/progress\n"
Indexed /my_repo/base/src/a.cc (136 symbols, 18679 refs, 475 files)\n"
--> $/progress\n"
Indexed /my_repo/base/src/b.cc (141 symbols, 18527 refs, 463 files)\n"
--> $/progress\n"
Подробнее здесь: https://stackoverflow.com/questions/794 ... references
Мобильная версия