从 Sublime Text 2 运行 Vala 代码的最简单的构建系统是:
{ "cmd": ["vala", "--pkg=gtk+-3.0", "$file"] }
这是我第一次尝试在 Windows 上为 Vala 创建构建系统,我对结果不太满意。编译期间弹出了几个烦人的窗口,之后,主机窗口仍然可见。为了解决这个问题,我在一个最小化的窗口中运行了 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来保存编译后的程序并在编译后运行(Roman Fischer和nemequ描述的技巧,但是用$file_base_name变量而不是静态文件名)。
我还添加了另外两个字段:file_regex 用于构建结果导航,selector 用于构建系统自动选择。