2017-01-08 14 views
3

Я составляю код Vala на ElementaryOS Loki, который поставляется с версией GTX версии 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? Я стараюсь полностью отключить предупреждения, которые я бы предпочел избежать, если это возможно. valac имеет переключатель --target-бойким, но нет никакого эквивалента "--target-GTK"

-

РЕДАКТИРОВАТЬ: например, эта небольшая программа демонстрирует проблему, если скомпилирован с valac -o test test.vala --pkg=gtk+-3.0 (на ElementaryOS Локи, с 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; 
    } 
} 
+0

Я не знаю, есть ли возможность отключить это. Они пытаются предупредить вас, что независимо от того, какую версию вы используете, для будущей совместимости вы не должны использовать определенные классы. – oldtechaa

ответ

3

Вероятно, лучшим решением будет использовать переключатель --enable-deprecated при компиляции с valac. Вы также можете попробовать --disable-since-check, если это не сработает. --disable-since-check был введен в Vala 0.32 с новым атрибутом [Version].

В идеальном мире библиотека также распространит свою привязку к Вале. Это означало бы, что привязка хранится в синхронизации с библиотекой. См. 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.

Итак, вы можете скачать gtk+-3.0.vapi и gdk-3.0.vapi из версии Vala 0.30.0 и использовать это вместо этого. Это, к сожалению, покажет много разных предупреждений из-за того, что информация о версии, отмеченная в VAPI, недавно изменилась. Вала теперь использует [Version] вместо [Deprecated]. Эти различные предупреждения могут быть подавлены с помощью --enable-deprecated.

Если вы вносите свой вклад в распространение, то нет основополагающей причины, по которой дистрибутивы должны связывать компилятор Vala с привязками, которые поставляются вместе с компилятором. Таким образом, у них может быть два или более пакетов. Один для компилятора, один для неперехваченных привязок, например. vala-0.30 и vala-non-upstreamed-bindings-0.30. Хотя это немного упрощает, например, Vala will continue to carry a binding some time after it has been generated upstream.

 Смежные вопросы

  • Нет связанных вопросов^_^