April 29, 2021
Welcome back to my blog series on GTK 4 and Visual Studio! If you're just joining us, make sure to take a look at the previous episode, where we saw how we can easily build and run GTK 4 on Windows with Visual Studio.
Now, on to the news. First up, GTK 4 now builds out of the box without applying any extra patches, thanks to the last remaining fix (!3135) being merged.
Furthermore, and more importantly, you can now build GTK 4 as a Meson subproject for your own application! This is not only useful for Windows builds, but also for many Linux distributions that do not yet package a recent enough version of GTK 4 and/or its dependencies.
To make your own application fall back to build GTK 4 as a Meson subproject in case the system does not provide it, simply add the following
subprojects/gtk.wrap file. This file instructs Meson on where to fetch the
gtk4 dependency if it cannot be found on the system:
[wrap-git] directory=gtk url=https://gitlab.gnome.org/GNOME/gtk.git push-url=ssh://firstname.lastname@example.org:GNOME/gtk.git revision=master depth=1 [provide] dependency_names=gtk4
That's it! When your
dependency('gtk4'), Meson will automatically configure a GTK4 subproject if GTK4 is not found on the system. It will also fetch and build any GTK4 dependencies which are not found, for example glib, which could be outdated on your system as well.
Recently, Christian Hergert announced the release of
GtkSourceView 5.0, the first application ported to GTK4.
I'm happy to report that all needed fixes to make it build on Windows with GTK4 as a Meson subproject have been merged on time!
Here is how to fetch and build the
GtkSourceView master branch, including GTK4 and all of its dependencies, on Windows with Visual Studio. Note that
-Dinstall_tests=true is only needed to have the test application installed, it is not needed if you're only interested in the library.
Make sure to follow instructions from the previous blog post to set up your build environment.
C:\src>git clone https://gitlab.gnome.org/GNOME/gtksourceview.git C:\src>cd gtksourceview C:\src\gtksourceview>meson setup build --prefix C:/gnome -Dinstall_tests=true C:\src\gtksourceview>meson compile -C build C:\src\gtksourceview>meson install -C build
Run the test application:
GTK 4 has an optional dependency on GStreamer for its multimedia widgets. It is possible to also build GStreamer and all its dependencies, including FFmpeg, as Meson subprojects for GTK 4, or even your own application! Simply add gst-build as a subproject:
[wrap-git] url=https://gitlab.freedesktop.org/gstreamer/gst-build.git revision=master [provide] dependency_names=gstreamer-player-1.0
At the time of writing, there is still a build issue (#152) but this can easily be worked around by deleting related code in
subprojects/gst-build/meson.build. A proper fix is still needed.
Now that you can use GTK 4 as a subproject of a real application, and build both GtkSourceView 5.0 and GTK4's GStreamer media backend, what's next? Add Windows CI to GTK 4? Stay tuned!
And of course, if you have any questions about GTK4 and GStreamer on Windows, please get in touch!
Earlier this year, from January to April 2021, I worked on adding support for stateless decoders for GStreamer as part of a multimedia internship…
In our previous post, we presented a project backed by INVEST-AI which introduces a multi-stage neural network-based solution. Now let's…
Initiated as a joint effort by the Google Chrome OS team and Collabora, the recent KernelCI hackfest brought the addition of new tests including…
There's a lot that has happened in the world of Zink since my last update, so let's see if I can bring you up to date on the most important…
Panfrost, the open source driver for Arm Mali, now supports OpenGL ES 3.1 on both Midgard (Mali T760 and newer) and Bifrost (Mali G31, G52,…
Collabora has been investing into Perfetto to enable driver authors & users to get deep insights into driver internals and GPU performance.…