Инструмент для генерации файла базы данных компиляции Clang's JSON для систем make GNU.
Он предназначен в основном на большие кодовые базы, не являющиеся CMAKE (Cmake уже генерирует базу данных компиляции). Вдохновленные такими проектами, как YCM-генератор и медведь, но быстрее (в основном с крупными проектами), поскольку в большинстве случаев не нужна чистая сборка (как это делают упомянутые инструменты) для создания файла базы данных компиляции, для достижения этого используется варианты создания, такие как -n / --dry-run и -k / --keep-going для извлечения команд компиляции. Кроме того, он более дружелюбен к перекрестной компилированию, чем подход YCM-генератора.
# pip install compiledb
sh-completion/compiledb.bash в ваш файл .bashrc . compiledb предоставляет сценарий make Pabper, который, кроме того, для выполнения команды Make Build, обновляет файл базы данных компиляции JSON, соответствующий этой сборке, что приводит к интерфейсу командной строки, аналогично медведя.
Чтобы сгенерировать файл compile_commands.json , используя сценарий Compiledb "Make Orbper", выполняя цель Makefile all :
$ compiledb make compiledb перенапрягает все параметры/аргументы, передаваемые после того, как make с GNU Make, так что можно, например, генерировать compile_commands.json , используя core/main.mk в качестве основного makefile ( -f флаг), запустив сборку из каталога build ( -C Flag):
$ compiledb make -f core/main.mk -C build По умолчанию compiledb make генерирует базу данных компиляции и запускает фактическую запрашиваемую команду сборки (действуя в качестве обертки), шаг сборки можно пропустить с помощью параметров -n или --no-build .
$ compiledb -n make Базовая команда compiledb была разработана таким образом, чтобы ее можно было использовать для анализа команд компиляции из произвольных текстовых файлов (или stdin), при условии, что у нее есть журнал сборки (в идеале сгенерированный с использованием команды make -Bnwk ) и генерирует соответствующую базу данных компиляции JSON.
Например, чтобы сгенерировать базу данных компиляции из файла build-log.txt , используйте следующую команду.
$ compiledb --parse build-log.txtили его эквивалент:
$ compiledb < build-log.txtИли даже, чтобы вывести вывод трубы и распечатать базу данных компиляции на стандартный вывод:
$ make -Bnwk | compiledb -o- По умолчанию compiledb генерирует базу данных компиляции JSON в формате списка «аргументы». Формат строки «Команда» также поддерживается благодаря использованию флага --command-style :
$ compiledb --command-style make Я внедрил этот инструмент, потому что мне нужно было индексировать некоторые модули AOSP для навигации и изучения целей (после того, как не было удовлетворенных результатов с текущими инструментами, доступными к тому времени, как YCM-генератор и медведь). Итак, я переработал ycm-генератор, который привел к первоначальной версии Compiledb/parser.py и успешно использовал для генерации compile_commands.json для некоторых модулей AOSP за ~ 1 мин, работающие в контейнере Docker, а затем мог использовать его с некоторыми отличными инструментами, такими как::
Уведомление:
Патчи всегда приветствуются :)
GNU GPLV3