Vala 编程/概念/基础
外观
Vala 仍在积极开发中,某些功能可能会随着时间推移而改变。 |
valac
是 Vala 编译器,但它不仅接受 Vala:它还接受 Genie(带有 Python 风格语法,扩展名为 .gs)、C 和 .vapi(Vala API)文件。您可以在 C 中声明一个低级函数,在 Vala 中创建一个包含此函数作为方法的对象,并在 Genie 文件中使用两者:您将获得一个可运行的执行文件。
Vala 的主要功能是成为 GNOME 的现代面向对象编程语言。Vala 和 Genie 的源代码都被处理成 C 代码,然后进行编译。
例如,在这个例子中
$ valac func.c obj.vala prog.gs -o program
Valac 从 obj.vala 生成 obj.vala.c,从 prog.gs 生成 prog.gs.c。然后,Valac 运行 GCC(带有很多 -I 参数,自动生成)来编译所有文件到目标代码,最后 ld 被 gcc 调用:我们将从 C、Vala 和 Genie 源代码的混合中获得一个本地可执行文件“program”。
当然,典型的参数,比如 --version 和 --help 在 Valac 中也能工作。它还从 GCC 中继承了 -c(编译到 .o,不链接)参数。
其他有用的参数
- -C: 转换为 C 代码
- --cc=COMMAND: 使用 COMMAND 作为 C 编译器
- -Xopt: 将 -opt 作为参数传递给 C 编译器(例如:-Xcc=O3 将 GCC 的优化器设置为级别 3)
- --pkg PNAME: 从 pkg-config 中添加包(就像 Mono mcs 中的 -pkg:PNAME 或者 gcc 中的 `pkg-config PNAME --cflags --libs` 一样)
一个完整的示例(使用 GTK2 和 goocanvas、一些线程等的程序)
- valac --pkg gtk+-2.0 --pkg goocanvas --pkg glib-2.0 --thread --pkg gee-1.0 --debug --Xcc=-O3 gtk_goocanvas.vala
TODO 解释如何构建一个用 Vala 编写的程序或库的项目。