Sublime Text Build System с несколькими командами

Прежде всего, я хотел бы сказать, что я новичок в возвышенном текстовом редакторе, и мне это нравится. У меня нет опыта работы с JSON, но это не кажется сложным.

Я пытаюсь написать систему сборки, которая вызовет скрипт bash, который переместит make-файл в каталог, в котором я работаю, и вызову этот make-файл, который скомпилирует мой код c с помощью avr-gcc, а затем перенесет его на подключенный микроконтроллер, используя AVRDUDE.

Я понимаю, что у возвышенного текста 2 может быть только один объект "cmd", поэтому я попытался вызвать все в одной строке из эмулятора терминала, и это сработало именно так, как я и предполагал. Звонок был:

checkAVRmakefile.sh $PWD; make PROJECTNAME+=hello install

мой сценарий находится в каталоге в моей переменной окружения $PATH, и я передаю ему каталог, в котором я работаю, чтобы он проверял там файл makefile и, если его там нет, копирует его из каталога, в котором я храню все файлы из моих make-файлов. Затем я вызываю make и передаю ему имя, которое я называю проектом, и программа установки мигает микроконтроллером AVR.

Что я делаю с возвышенным это:

{
"shell":true,
"cmd":[ "checkAVRmakefile.sh", "$file_path", ";" ,"make","PROJECTNAME+=$file_base_name","install"],
}

Это только запускает скрипт bash, который помещает make-файл в каталог, но не запускает make.

Кто-нибудь видит, где я ошибся?

Любая помощь приветствуется. Я также задавал вопрос, похожий на этот на возвышенных форумах, но никто не ответил. Также я нахожусь на Ubuntu и использую ST2.

2 ответа

Решение

Я нашел, в чем заключалась моя проблема. Это была комбинация моего bash-скрипта, не обрабатывающего пробелы в именах моих каталогов, и того, что я не использовал shell: true объект в системе сборки. Итак, что работает сейчас:

{
   "shell":true,
   "cmd":["check.sh $file_path && make PROJECTNAME+=$file_base_name install"]

}

Похоже, что с объектом shell: true мне не нужно, чтобы каждый ввод в списке cmd был в кавычках, только одна длинная строка.

(спасибо u/Scoo_ из reddit за предложение об исправлении) Надеюсь, это поможет кому-то еще

РЕДАКТИРОВАТЬ (17-3-2014): я загрузил файлы, которые я использую для создания своих проектов AVR, в мой git-концентратор: https://github.com/Jesse-Millwood/AVR-Stuffs.git

Итак, у меня есть другая установка Python на моей машине, которая мне нужна для различных целей, и мне нужно запустить.bat или.cmd в моем терминале, чтобы настроить переменные окружения, прежде чем использовать этот вариант Python. Это нужно сделать, потому что в противном случае он импортирует другие модули с тем же именем из моей установки по умолчанию c:\Python27 python. Я немного покопался в интернете, и это то, что я смог придумать, чтобы запустить его из Sublime Text 2, когда нажал Ctrl+B (build).

Я надеюсь, что кто-то найдет это полезным. Это пользовательский файл сборки, в котором заканчивается Sublime, используя мой другой вариант. Вы можете создать новый файл сборки в Sublime, выбрав Инструменты> Система сборки> Новая система сборки и вставьте его в него с любыми модами, которые вам нужны.

{
    "shell":true,
    "cmd": ["C:\\GIT\\Folder1\\Folder1\\thebatch.cmd", "&;",
        "python", "-u", "$file"],
    "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
    "working_dir": "C:\\GIT\\GBmapper\\AWSInterfaces\\DEM_Processing"
}

Это моё решение без сценария оболочки, протестировано для MacOS:

{
    "cmd": ["sh","-c","nasm -f bin -o '${file_base_name}' '${file}';chmod +x '${file_base_name}'"],
    "file_regex": "^(.+):([0-9]+)()?: error: (.*)$",
    "working_dir": "${file_path}",
    "selector": "source.assembly"
}
Другие вопросы по тегам