创建Vala Sublime Text构建系统

时间:2013-10-06 22:44:45

标签: compilation sublimetext vala

我似乎无法在Sublime Text 2中创建Vala构建系统......这是我到目前为止所拥有的:

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

不幸的是,这仅使用valac编译代码,但不运行它。

如何让它直接运行编译后的程序?

3 个答案:

答案 0 :(得分:1)

使用vala代替valac。但是,请记住,这不会保留生成的可执行文件。要做到这一点,你需要将多个命令链接在一起 - 我不知道如何使用Sublime Text,但在命令行上你可以做类似的事情

valac -o foo --pkg gtk+-3.0 file.vala && ./foo

答案 1 :(得分:1)

这适用于我的Sublime Text 3(通过引入“shell_cmd”):

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

app.vala 将是已编译的构建文件的文件名。

答案 2 :(得分:0)

从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描述的技巧,但{{1}变量而不是静态文件名。)

我还添加了两个字段:$file_base_name用于构建结果导航,file_regex用于构建系统自动选择。