Создание системы сборки Vala Sublime Text

Кажется, я не могу создать систему сборки Vala в Sublime Text 2... Вот что у меня есть:

{
"cmd": ["valac", "--pkg", "gtk+-3.0", "'$file'"]
}

К сожалению, это только компилирует код с valac, но не запускает его.

Как я могу заставить его запускать скомпилированную программу сразу после этого?


person Barry Smith    schedule 06.10.2013    source источник
comment
вы уже нашли какое-нибудь решение?   -  person HTron    schedule 21.09.2014


Ответы (3)


Используйте vala вместо valac. Однако имейте в виду, что это не сохранит полученный исполняемый файл. Для этого вам нужно будет объединить несколько команд — я не знаю, как это сделать с помощью Sublime Text, но в командной строке вы можете сделать что-то вроде

valac -o foo --pkg gtk+-3.0 file.vala && ./foo
person nemequ    schedule 08.10.2013

Это работает для меня в Sublime Text 3 (путем введения «shell_cmd»):

{
  "shell_cmd": "valac --pkg gtk+-3.0 $file -o app.vala && ./app.vala"
}

app.vala будет именем скомпилированного файла сборки.

person HTron    schedule 20.09.2014
comment
Я не знаком с Sublime, но, может быть, другой возможностью было бы написать небольшой сценарий оболочки и запустить его с помощью "cmd"? - person Jens Mühlenhoff; 21.09.2014

Простейшей системой сборки для запуска кода Vala из Sublime Text 2 будет:

{ "cmd": ["vala", "--pkg=gtk+-3.0", "$file"] }

Это была моя первая попытка создать систему сборки Vala для Windows, и результат меня не совсем удовлетворил. Во время компиляции выскочило несколько надоедливых окон, а после хост-окно оставалось видимым. Чтобы решить эту проблему, я запустил vala в свернутом окне:

{ "cmd": ["cmd", "/c start /min vala --pkg=gtk+-3.0 $file"] }

Это сработало, но теперь вывод компилятора не был виден для Sublime Text.

Поскольку я просто играю с Vala, а мои программы имеют сложность Hello World, я могу решить обе проблемы, просто скомпилировав код дважды. Сначала в код C, чтобы получить результаты сборки, а затем запустить код из свернутого окна.

{ "cmd": ["cmd", "/c valac --ccode --pkg=gtk+-3.0 $file && start /min vala --pkg=gtk+-3.0 $file"] }

Компиляция только в C имеет свои недостатки, и ошибки C-компилятора не будут отображаться в результатах сборки, но я могу с этим смириться.

Вот что у меня получилось:

{ 
    "cmd": ["cmd", "/c valac --ccode --pkg=gtk+-3.0 $file && start /min /wait valac -X -mwindows --pkg=gtk+-3.0 $file -o $file_base_name && $file_base_name"],
    "file_regex": "^(?<filename>(?:[A-Z]:)?[^:]+):(?<line>[0-9]+).(?<column>[0-9]+)[^:]+: (?<message>.+)",
    "selector": "source.vala"
}

Я использовал здесь valac вместо vala, чтобы сохранить скомпилированную программу и запустить ее после компиляции (трюк, описанный Романом Фишером и nemequ, но с переменной $file_base_name вместо статического имени файла ).

Также я добавил еще два поля: file_regex для навигации по результатам сборки и selector для автовыбора системы сборки.

person Dmitry Popov    schedule 04.12.2014