2017-01-08 44 views
3

我正在編譯ElementaryOS Loki上的一些Vala代碼,該版本隨附GTK 3.18版。現在,我得到(很多)已過時警告信息,如:Vala爲更高的GTK/GDK版本生成不推薦使用的警告

src/ScreenGrabber.vala:64.55-64.94: warning: Gdk.Display.get_device_manager has been deprecated since 3.20. 
src/ScreenGrabber.vala:64.55-64.115: warning: Gdk.DeviceManager.get_client_pointer has been deprecated since 3.20 
src/ScreenGrabber.vala:85.19-85.50: warning: Gdk.Screen.get_active_window has been deprecated since 3.22 

但是這不應該贊成「過時」的人來使用推薦的替代方法簡單dont't在3.18存在,所以我不能使用它們。

我該如何讓valac給我正確的警告給定的GTK版本?如果可能的話,我傾向於完全禁止我希望避免的警告。華劣克具有--target-油嘴的開關,但沒有等價物 「--target-GTK」

-

編輯: 例如這個小程序演示

using Gtk; 
public class Test { 

    public Test() { 
     var manager = Gdk.Display.get_default().get_device_manager(); 
    } 

    public static int main(string[] args) { 
     var test = new Test(); 
     return 0; 
    } 
} 
+0

我不知道是否有一個選項將其關閉。他們試圖警告你,無論你使用什麼版本,爲了將來的兼容性,你都不應該使用某些類。 – oldtechaa

回答

3

也許是最好的解決辦法是valac編譯時使用--enable-deprecated開關,如果編譯valac -o test test.vala --pkg=gtk+-3.0(上ElementaryOS洛基,用GTK 3.18)的問題。如果這不起作用,您也可以嘗試--disable-since-check--disable-since-check是在Vala 0.32中引入的,具有新的[Version]屬性。

在一個理想的世界裏,圖書館也會分發它對Vala的綁定。這意味着綁定與庫保持同步。請參閱Vala Bindings Upstream guide

GTK +和Vala都是GNOME託管的項目。雖然Vala帶有GTK +綁定,但兩個項目都保持同步並且應該一起工作。具體涉及到你的問題,GTK + 3.18 was released 22 September 2015和Vala 0.30 on the 18 September 2015。這兩個都是在GNOME 3.18 release on 23 September 2015的時間。

Loki發生了什麼事情,according to the Loki beta release blog post,GTK + 3.18和Vala 0.32已經捆綁在一起。 Vala 0.32攜帶GTK + 3.20的綁定。

因此,您可以從Vala 0.30.0版本下載gtk+-3.0.vapigdk-3.0.vapi,然後使用它。不幸的是,這會顯示很多不同的警告,因爲VAPI中最近更改了版本信息的方式。 Vala現在使用[Version]而不是[Deprecated]--enable-deprecated可以抑制這些不同的警告。

如果您對發行版有所貢獻,那麼發行版就不需要將Vala編譯器與編譯器附帶的綁定綁定在一起。所以他們可以有兩個或更多的包裝。一個用於編譯器,一個用於非最新的綁定,例如vala-0.30vala-non-upstreamed-bindings-0.30。雖然這有點簡化,例如Vala will continue to carry a binding some time after it has been generated upstream

相關問題