VSCode не использует compile_commands.json для путей к библиотекам
Я перепробовал все, но я не могу заставить VSCode распознавать пути моей библиотеки внутри compile_commands.json
, Ниже несколько фотографий, чтобы показать, что я имею в виду:
Дерево проекта
Актуальные файлы
Как вы видите, расширение C/C++ не обнаруживает мои библиотеки, даже если они содержатся в моем compile_commands.json
который генерируется CMake. Любая помощь с этим была бы очень признательна.
1 ответ
Генератор вашего compile_commands.json
файл перемещает пути включения в файлы ответов (файлы @file.rsp
файлы в тексте "команда": поле вашего Json). Некоторые генераторы делают это в Windows, чтобы ограничить длину команд, вводимых в командной строке, которая в настоящее время составляет около 8 тыс. Символов по сравнению с ~128 тыс. Символов в Linux. Исторически в Windows были даже более короткие пределы, поэтому некоторые инструменты активно переносили все в @files, даже если пределы длин строк не превышались.
К сожалению vscode-cpptools
расширение в настоящее время не обрабатывает это @file.rsp
синтаксис. Смотрите эту ветку.
Попробуйте использовать генератор ниндзя при вызове Cmake. Для меня (запуск mingw64 внутри MSys2), Ninja создал автономный compile_commands.json
файлы, которые vscode-cpptools анализирует правильно.
Пример вызова cmake из корня исходного каталога:
$ cmake -H"." -B"${output_dir}" -G"Ninja" -DCMAKE_EXPORT_COMPILE_COMMANDS=1