【问题标题】:Vala generates deprecated warnings for higher GTK/GDK VersionsVala 为更高的 GTK/GDK 版本生成不推荐使用的警告
【发布时间】:2017-05-22 17:55:06
【问题描述】:

我正在 ElementaryOS Loki 上编译一些 Vala 代码,它随 GTK 版本 3.18 提供。现在我收到(很多)已弃用的警告,例如:

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

但是推荐的替代方法应该用于支持“已弃用”的方法在 3.18 中根本不存在,所以我不能使用它们。

如何让 valac 针对给定的 GTK 版本给出正确的警告?如果可能的话,我倾向于完全关闭我宁愿避免的警告。 valac 有一个开关 --target-glib,但没有等效的 "--target-gtk"

--

编辑: 例如如果使用valac -o test test.vala --pkg=gtk+-3.0(在 ElementaryOS Loki 上,使用 GTK 3.18)编译,这个小程序演示了问题

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;
    }   
}   

【问题讨论】:

  • 我不知道是否有关闭此选项的选项。他们试图警告您,无论您使用什么版本,为了将来的兼容性,您都不应该使用某些类。

标签: gtk3 vala


【解决方案1】:

可能最好的解决方案是在使用valac 编译时使用--enable-deprecated 开关。如果这不起作用,您也可以尝试--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

【讨论】:

    猜你喜欢
    • 2020-01-31
    • 2017-05-18
    • 2023-03-23
    • 1970-01-01
    • 2020-05-14
    • 2016-09-19
    • 2015-02-26
    • 2017-03-01
    • 1970-01-01
    相关资源
    最近更新 更多