Есть ли способ в VS Code импортировать проекты Makefile?

Как сказано в заголовке, могу ли я автоматически заполнить c_cpp_properties.json из существующего Makefile?

Edit:

Для других, пытающихся импортировать make-файлы, я нашли набор скриптов, которые выполняют именно то, чего я хотел, — управление встроенными проектами STM32 с помощью VS Code. Если вы покопаетесь в папке скриптов, вы можете найти парсер make и пополнитель файлов проекта VSCode.

Вот репо, наслаждайтесь!


Это ответ может не полностью дать вам то, что вы хотите, но, надеюсь, он поможет вам настроить среду VS Code.

В заголовке вопроса вы упоминаете «Makefile projects», что указывает на то, что у вас есть неправильное впечатление, что файлы Makefiles (GNU) фиксируют параметры проекта так же, как файлы проекта Visual Studio. Файлы Makefile так не работают, и краткий ответ на ваш вопрос: Нет, похоже, нет способа «импортировать» Makefile в VS Code и автоматически устанавливать значения в вашем c_cpp_properties.json file.

Сказав это, есть некоторые другие механизмы, которые могут помочь вам начать работу с VS Code в вашей ситуации, в зависимости от других элементов, которые есть в вашей инструментальной цепочке.

VS Code работает исходя из того, что он открывает один или несколько каталогов в вашей файловой системе. Когда вы это сделаете, он автоматически просканирует все свои подкаталоги, отобразит дерево и выполнит линтинг (если он включен) для обнаружения проблем. Действительно, подключаемые каталоги необходимо добавлять вручную в ваш файл c_cpp_properties.json , но для рекурсивного добавления всех ваших подкаталогов в список включаемых каталогов вы можете использовать выражение

  "$ {workspaceRoot}/**"  

в качестве одного из элементов в вашей настройке includePath . См. Сообщение в блоге Расширение Visual Studio Code C/C ++ за май 2018 г. Обновление — настройка IntelliSense стала намного проще! Больше подробностей. Это часто решает многие недостающие символы. Если вы также используете внешние или сторонние библиотеки, вам необходимо добавить их в настройку includePath вручную, и этого нет.

Кроме того, , вы можете создавать задачи VS Code для выполнения вашей команды make по своему вкусу. Это объясняется здесь: Интеграция с внешними инструментами через задачи. Расширение Microsoft C/C ++ поставляется с набором так называемых сопоставителей проблем, которые анализируют вывод вашей команды и могут интерпретировать его для некоторых известных компиляторов. Вы увидите гиперссылки на ошибки и предупреждения, чтобы перейти непосредственно к соответствующему месту в вашем коде..

Пример такой задачи может выглядеть так:

  {"label": "Build All Debug", "type": "  shell "," command ":" make -f path/to/Makefile DEBUG = 1 "," group ": {" kind ":" build "," isDefault ": true}," presentation ": {" show ":  "always", "panel": "new"}, "problemMatcher": ["$ gcc"]}  

6

Расширение Intellisense Visual Studio Code для C/C ++ поддерживает базу данных compile_commands.json. Некоторые утилиты makefile могут сами генерировать эти базы данных, но у меня нет опыта их использования. Для GNU make вам понадобится какой-нибудь вспомогательный скрипт или инструмент. Я использовал пакет python compiledb:

  sudo pip install compiledbcd projectfoldermake cleancompiledb make  

После его запуска вы должны получить файл compile_commands.json. Затем в VS Code вам нужно отредактировать c_cpp_properties.json для рассматриваемой рабочей области. Один из способов открыть его — щелкнуть имя конфигурации в правом нижнем углу строки состояния и затем щелкнуть «Редактировать конфигурации (json)». Или вы можете открыть панель команд (CTRL + SHIFT + P в моей системе) и ввести C/C ++: Edit configurations (JSON)

Затем, в используемую вами конфигурацию добавьте свойство "compileCommands": "$ {workspaceFolder}/compile_commands.json"

Полный пример:

  {"конфигурации": [{"name": "geany", "includePath": ["$ {workspaceFolder}/**"], "compilerPath": "/usr/bin/gcc  "," cStandard ":" c11 "," cppStandard ":" c ++ 17 "," intelliSenseMode ":" gcc-x64 "," browse ": {" path ": [" $ {workspaceFolder}/** "  ], "limitSymbolsToIncludedHeaders": true}, "compileCommands": "$ {workspaceFolder}/compile_commands.json"}], "version": 4}  

Теперь код Visual Studio При анализе Intellisense должны использоваться абсолютно правильные каталоги include, директивы define и другие флаги компилятора командной строки, уникальные для каждого отдельного исходного файла.

Поделиться
Улучшить этот ответ
ответил 6 января ’20 в 20:26
  • 1
    sudo pip install может повредить пакеты, установленные дистрибутивом Linux. pip install --user не будет. — nyanpasu64 12 сен. ’20 в 10:32
добавить комментарий |

Расширение Intellisense Visual Studio Code для C/C ++ поддерживает базу данных compile_commands.json. Некоторые утилиты makefile могут сами генерировать эти базы данных, но у меня нет опыта их использования. Для GNU make вам понадобится какой-нибудь вспомогательный скрипт или инструмент. Я использовал пакет python compiledb:

  sudo pip install compiledbcd projectfoldermake cleancompiledb make  

После его запуска вы должны получить файл compile_commands.json. Затем в VS Code вам нужно отредактировать c_cpp_properties.json для рассматриваемой рабочей области. Один из способов открыть его — щелкнуть имя конфигурации в правом нижнем углу строки состояния и затем щелкнуть «Редактировать конфигурации (json)». Или вы можете открыть панель команд (CTRL + SHIFT + P в моей системе) и ввести C/C ++: Edit configurations (JSON)

Затем, в используемую вами конфигурацию добавьте свойство "compileCommands": "$ {workspaceFolder}/compile_commands.json"

Полный пример:

  {"конфигурации": [{"name": "geany", "includePath": ["$ {workspaceFolder}/**"], "compilerPath": "/usr/bin/gcc  "," cStandard ":" c11 "," cppStandard ":" c ++ 17 "," intelliSenseMode ":" gcc-x64 "," browse ": {" path ": [" $ {workspaceFolder}/** "  ], "limitSymbolsToIncludedHeaders": true}, "compileCommands": "$ {workspaceFolder}/compile_commands.json"}], "version": 4}  

Теперь код Visual Studio Анализ Intellisense должен использовать точно правильные каталоги include, директивы define и другие флаги компилятора командной строки, уникальные для каждого отдельного исходного файла.


2

Для других, пытающихся импортировать make-файлы, я нашел набор скриптов, которые выполняют именно то, что я хотел достичь, — управление встроенных проектов STM32 через VS Code. Если вы покопаетесь в папке скриптов, вы можете найти парсер make и пополнитель файлов проекта VSCode.

Вот репо, наслаждайтесь!

Поделиться
Улучшить этот ответ
ответил 11 дек. ’18 в 13:39
добавить комментарий |

Для других, пытающихся импортировать файлы сборки, я нашел набор сценариев, которые выполнить именно то, что я хотел достичь, — управление встроенными проектами STM32 через VS Code. Если вы покопаетесь в папке сценариев, вы можете найти парсер make и пополнитель файлов проекта VSCode.

Здесь репозиторий , наслаждайтесь!


1

GNU Make обычно используется для компиляции проектов C, но может создавать любые типы выходных файлов, которые вы хотите.

Вы можете создать сценарий для этой цели или сделать это из другого make-файла, например: VSCode.mk , который вы включаете в свой Makefile верхнего уровня.

В этом решении используется One Shell, но если это невозможно, отдельный сценарий выглядел бы лучше.

@ делает вывод лучше.

Скорее всего, вы не можете безопасно скопировать и вставить этот код, потому что Make использует буквальные табуляции, а не пробелы.

  .ONESHELL: SOURCE_DIRECTORY: = srcDEFINED_VALUE: = 1 # Рецепт: .vscode/c_cpp_properties.json: @ cat  "$ @" {"configurations": [{"name": "Linux  "," includePath ": ["  $$ {workspaceFolder}/$ (SOURCE_DIRECTORY) * "]," определяет ": [" DEFINED_VALUE = $ (DEFINED_VALUE) "]," compilerPath ":" $ (CC) ","  cStandard ":" c11 "," cppStandard ":" c ++ 17 "," intelliSenseMode ":" clang-x64 "," browse ": {" limitSymbolsToIncludedHeaders ": true}}]," version ": 4} EOF  

Поделиться
Улучшите этот ответ
отредактировал 11 июля ’20 в 8:19
ответил 11 июля ’20 в 8:07
добавить комментарий |

GNU Make обычно используется для компиляции проектов C, но он может создавать любые типы выходных файлов по вашему желанию.

Вы можете создать сценарий для этой цели или сделать это из другого make-файла, например: VSCode.mk , который вы включаете в свой топ level Makefile .

В этом решении используется One Shell, но если это невозможно, отдельный сценарий будет выглядеть лучше.

@ делает ваш вывод более приятным.

Скорее всего, вы не можете безопасно скопировать и вставить этот код, потому что Make использует буквальные табуляции, а не пробелы.

 .  ONESHELL: SOURCE_DIRECTORY: = srcDEFINED_VALUE: = 1 # Рецепт: .vscode/c_cpp_properties. json: @ cat  "$ @" {"конфигурации": [{"name": "Linux", "includePath": [" $$ {workspaceFolder}/$ (SOURCE_DIRECTORY) *"], "определяет  ": [" DEFINED_VALUE = $ (DEFINED_VALUE) "]," compilerPath ":" $ (CC) "," cStandard ":" c11 "," cppStandard ":" c ++ 17 "," intelliSenseMode ":" clang-  x64 "," просмотр ": {" limitSymbolsToIncludedHeaders ": true}}]," версия ": 4} EOF  

Оцените статью
Botgadget.ru
Добавить комментарий