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?

★★★★★

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

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

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

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

Интересная тема.. Можешь скинуть конфиг вима для этой штуки? (Я так понял он сконекчен с вимом у тебя)

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

Нет, не сконнечен, метод пристального взгляда я применяю в sourcetrail, а потом делаю изменения в vim. Может и имеет смысл попробовать их скрестить, но я этим вопросом не задавался.

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

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

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

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

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

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

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

Bass ★★★★★
() автор топика

tags: anjuta, kdevelop, qtcreator, с, с++

compile_commands.json

Какой-то внутренний файл для clang, но тегах его нет. Кто-то рашает задачу, которую не понимает.

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

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

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

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

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

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

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

О, эксперты подтянулись.

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

Bass ★★★★★
() автор топика
Ответ на: комментарий от 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)

Anjuta, QtCreator, Code::Blocks, KDevelop, Atom, или CodeLite

Ты бы еще про notepad спросил. Перечисленнные инструменты ни для чего кроме helloworld не годятся. Впрочем как и VSCode тот же, в рамках C++.

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

Так, хорошо, а какие годятся?

Не то, чтобы я до сих пор не знал ответа на свой вопрос, но интересно твоё мнение.

Bass ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.