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"
}