 |
|

16.04.2024, 03:33
|
|
Познающий
Регистрация: 30.10.2018
Сообщений: 77
С нами:
3966872
Репутация:
58
|
|
Есть допустим функция по классике объявленная в .hpp и описанная в .cpp, в VS code я запрашиваю все ссылки на эту функцию (ПКМ →Find all references) и clangd почему-то ищет их только в .cpp упорно игноря .hpp такая же фигня и с глобальным ренеймингом. Это какое-то ограничение clangd или ему нужны доп. флаги ? Что-то похожее описывается тут и тут.
|
|
|

16.04.2024, 03:57
|
|
Флудер
Регистрация: 26.10.2013
Сообщений: 4,924
С нами:
6603505
Репутация:
183
|
|
Сообщение от sobe1t
Есть допустим функция по классике объявленная в .hpp и описанная в .cpp, в VS code я запрашиваю все ссылки на эту функцию (ПКМ →Find all references) и clangd почему-то ищет их только в .cpp упорно игноря .hpp такая же фигня и с глобальным ренеймингом. Это какое-то ограничение clangd или ему нужны доп. флаги ? Что-то похожее описывается тут и тут.
Понял. Проблема не возникает, когда clangd сам может определить связь между заголовком и сурсом - обычно он с трудом определяет такие связи, если файлы лежат в разных папках, например include/main.hpp и src/main.cpp. Решается включением хидера в compile_commands.json. Где-то в одной из иссушек была тула, которая парсит compile_commands.json и сурсы из него, что бы вытащить все хзидеры и создать из них новый compile_commands.json.
Так же можешь попробовать повторить проблему на патченном клиенте clangd. Я точно не помню, но когда я добавлял поддержку cmake в расширение clangd, CMake вроде как включал хидеры в модель кодаю Но для этого хидеры должны быть указаны в проекте:
Код:
Код:
add_library(foo main.cpp main.h) # Хидер указан для компиляции
add_library(bar main.cpp) # Хидер не указан для компиляции
У либы foo - должны норм работать ссылки с патченным clangd клиентом. При этом compile_commands.json для либ foo и bar будут одинаковым - CMake исключает хидеры при его генерации.
|
|
|

22.06.2024, 17:01
|
|
Постоянный
Регистрация: 26.03.2016
Сообщений: 660
С нами:
5332594
Репутация:
163
|
|
Срчик, спасибо тебе за помощь с кросскомпляцией и топовейший пропатченный clangd. Проблем действительно нет, когда Microsoft идёт на***. Надо бы сделать "Normal C/C++ Enjoyer Extensions Pack"
|
|
|

05.07.2024, 03:54
|
|
Флудер
Регистрация: 26.10.2013
Сообщений: 4,924
С нами:
6603505
Репутация:
183
|
|
|
|
|

11.02.2025, 19:20
|
|
Познавший АНТИЧАТ
Регистрация: 01.04.2018
Сообщений: 1,710
С нами:
4272230
Репутация:
183
|
|
Сообщение от SR_team
1. Поддержка doxygen-документации
в виде отдельного расширения можно не ждать?
|
|
|

11.02.2025, 23:56
|
|
Флудер
Регистрация: 26.10.2013
Сообщений: 4,924
С нами:
6603505
Репутация:
183
|
|
Сообщение от Musaigen
в виде отдельного расширения можно не ждать?
Можно сделать, но надо будет дефолтный ховер отключать
UPD Хотя по идее можно попробовать похукать middleware клиента через API, что бы сделать без отключения
|
|
|

08.05.2025, 00:34
|
|
Новичок
Регистрация: 08.05.2025
Сообщений: 2
С нами:
538206
Репутация:
1
|
|
Спасибо, очень полезная информация!
Есть ли какое-то решение для запуска таргетов?
У меня большой cmake проект и много таргетов.
Хочется уметь запускать их с различными аргументами.
Расширение cmake не дает возможность запускать их с аргументами, а в launch.json запускается только через gdb/lldb.
Неудобно капец
|
|
|

08.05.2025, 12:43
|
|
Флудер
Регистрация: 26.10.2013
Сообщений: 4,924
С нами:
6603505
Репутация:
183
|
|
Сообщение от nikkymen
Спасибо, очень полезная информация!
Есть ли какое-то решение для запуска таргетов?
У меня большой cmake проект и много таргетов.
Хочется уметь запускать их с различными аргументами.
Расширение cmake не дает возможность запускать их с аргументами, а в launch.json запускается только через gdb/lldb.
Неудобно капец
В VSCode есть встроеная команда для запуска таргетов из launch.json без отладчика (workbench.action.debug.run). Ты так же прописываешь конифиг с отладчиком, а потом просто используешь ее вместо начала отладки
|
|
|

08.05.2025, 14:12
|
|
Новичок
Регистрация: 08.05.2025
Сообщений: 2
С нами:
538206
Репутация:
1
|
|
Сообщение от SR_team
В VSCode есть встроеная команда для запуска таргетов из launch.json без отладчика (workbench.action.debug.run). Ты так же прописываешь конифиг с отладчиком, а потом просто используешь ее вместо начала отладки
Если посмотреть на вывод консоли, то видно, что запускается все равно через gdb, просто без брейкпоинтов. Т.е отладочные символы все равно грузятся
|
|
|

08.05.2025, 20:22
|
|
Флудер
Регистрация: 26.10.2013
Сообщений: 4,924
С нами:
6603505
Репутация:
183
|
|
Сообщение от nikkymen
Если посмотреть на вывод консоли, то видно, что запускается все равно через gdb, просто без брейкпоинтов. Т.е отладочные символы все равно грузятся
Можешь cmake аналогичную команду использовать, но она только для cmake проектов и нельзя задать аргументы, рабочую папку и переменные среды
UPD: Из того что начитал по workbench.action.debug.run - оно использует отладчик как лаунчер, но не аттачится к процессу. Сделано, что бы соблюсти все правила описаные в launch.json, т.к. там могут быть поля специфичные для отладчика. Думаю для запуска на локальной машине можно поискать расширения с дебагером-заглушкой, который будет юзать launch.json просто как конфиг для запуска. Но для кейсов с деплоем, например apk, такое вряд ли есть. Так что встроенное решение в VSCode наверно самое нормальное в этом плане
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|