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
Другие вопросы по тегам