跳轉到內容

Vala 程式設計/概念/基礎

來自華夏公益教科書,開放的書籍,為開放的世界

原始檔

[編輯 | 編輯原始碼]

valac 是 Vala 編譯器,但它不僅接受 Vala:它還接受 Genie(帶有 Python 風格語法,副檔名為 .gs)、C 和 .vapi(Vala API)檔案。您可以在 C 中宣告一個低階函式,在 Vala 中建立一個包含此函式作為方法的物件,並在 Genie 檔案中使用兩者:您將獲得一個可執行的執行檔案。

Vala 編譯器的工作原理

[編輯 | 編輯原始碼]

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

華夏公益教科書