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 編寫的程式或庫的專案。