LINUX.ORG.RU

Какие инструменты умеют строить проектную модель по compile_commands.json?

 , , , ,


0

1

Всем здравствуйте.

Собственно, вопрос.

Я пока что могу назвать лишь 3 инструмента, умеющих указанное:

  • SourceTrail,
  • CLion,
  • Visual Studio Code (через c_cpp_properties.json, очень криво).

Кто ещё?

Может быть, есть какие-л. модули расширения для Anjuta, QtCreator, Code::Blocks, KDevelop, Atom, или CodeLite?

★★★★★

QtCreator может импортировать каталог сборки, если использовать генератор для CodeBlocks’а

Я еще юзаю cquery и vim, он как раз по ним строит. Но cquery устарел, пока что не занимался этим вопросом, как заменить.

zerhud ()
Ответ на: комментарий от zerhud

В Qt Creator есть кнопка, которая этот файлик создаёт: Build | Generate Compilation Database.

если использовать генератор для CodeBlocks’а

Почему они наконец не уйдут с этих костылей на него – непонятно.

EXL ★★★★★ ()
Ответ на: комментарий от EXL

Да, потому что QtCreator умеет работать с CMake и Qbs, а они оба, в свою очередь, умеют генерировать compile_commands.json.

Но у меня обратная задача: нужен инструмент, умеющий как раз читать этот файл.

Bass ★★★★★ ()
Ответ на: комментарий от Urechis_Unicinctus

Хочу понять, как правильно экранировать аргументы командной строки (в вариантах command и arguments), когда

  • (а) путь до компилятора содержит пробелы, либо
  • (б) сами аргументы содержат пробелы или кавычки (”/path to/gcc” ‘-DFOO_H=“foo.h”’).

В случае с arguments всё более-менее понятно: там уже командная строка, разбитая на элементы, и экранирование снято.

В случае с command мне compiledb и CMake генерируют противоречивые результаты.

Спецификацию читал, но там на эту тему буквально абзац, и формулировки туманны.

Bass ★★★★★ ()
Последнее исправление: Bass (всего исправлений: 1)
Ответ на: комментарий от Bass

Спецификацию читал, но там на эту тему буквально абзац, и формулировки туманны.

Читаю документацию за тебя https://clang.llvm.org/docs/JSONCompilationDatabase.html#supported-systems

Clang’s tooling interface supports reading compilation databases; see the LibTooling documentation. libclang and its python bindings also support this (since clang 3.2); see CXCompilationDatabase.h.

Продолжаю наблюдение.

anonymous ()
Ответ на: комментарий от anonymous

Спасибо, умник.

Вопрос был про готовые инструменты, т. е. то, с чем имеет дело разработчик прикладного кода (см., напр., вот этот список). Про API LibTooling или, прости господи, python bindings, речь не шла.

А ты, видимо, пришёл понтануться/повыпендриваться. Тэги ему, блин, не нравятся.

Проходи мимо.

Bass ★★★★★ ()
Последнее исправление: Bass (всего исправлений: 1)