Генератор конфигураций для C/C++ for Visual Studio Code.
Принцип работы
Что бы было понятно как работать и как устранять проблемы.
Из параметра make-to-cpp-props.toolchainName берется имя тулчейна, например arm-none-eabi-gcc
На основе имени тулчейна создается "ловушка"
При генерировании конфига вызывается команд make, а путь к пустышке добавляется в начало перечислений переменной среды PATH. Тем самым "ловушка" подменяет собой реальный тулчейна и собирает параметры командной строки с которыми вызван тулчейн.
Собранные данные анализируются регулярными выражениями и заполняется структура файла конфига.
Если конфиг с таким именем уже существует, то он обновляется, если нет - создается.
Исходный код "Ловушки"
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
FILE * fp = fopen("output.txt", "a+");
for (int i = 0; i < argc; i++) { fprintf(fp, "%s ", argv[i]); }
fprintf(fp, "\n");
fclose(fp);
return 0;
}
Настройки
Имена параметров начинаются с make-to-cpp-props., например "make-to-cpp-props.toolchainName"
Параметр
Тип
Комментарий
Значение по умолчанию
toolchainName
Строка
Имя тулчейна
arm-none-eabi-gcc
debug.console-log
Boolean
Включает вывод отладочной информации
true
defines-regexp
Строка
Шаблон регулярного выражения для дефайнов
/\s-D\s?([\w\=]*[\w"\\\.]*)\s?/g
includes-regexp
Строка
Шаблон регулярного выражения для инклудов
/\s-I\s?"?([.\S\w]*)"?/g
generator.compilerPath
Boolean
Разрешает добавлять в конфиг путь к компилятору (работает криво)
false
Настройки можно менять по своему усмотрению. Рекомендуется toolchainName определять в настройках папки или воркспейса.
Как использовать
Установить и настроить
Вызвать контекстное меню на папке в которой лежит целевой Makefile. Поддерживаются стандартные имена "GNUmakefile", "makefile", "Makefile" и файлы ".mk"
Запустить команду и дождаться выполнения.
Существующие проблемы
Не поддерживается конфиг json с комментариями (обещаю исправить).
Плохо работает объединение путей на разных платформах, поэтому пути в конфиге не красивые (обещаю исправить)
Регулярки не красивые (я не специалист в них, буду рад помощи)