We're hiring!
*

Build your own application with GTK 4 as a Meson subproject!

Xavier Claessens avatar

Xavier Claessens
April 29, 2021

Share this post:

Reading time:

Note: In September 2021, the GStreamer project merged all its git repositories into a single, unified repository, often called monorepo. The build system referred in this post as "gst-build" is now in the root of this combined/mono repository.

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://git@gitlab.gnome.org:GNOME/gtk.git
revision=main
depth=1

[provide]
dependency_names=gtk4

That's it! When your meson.build does 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.

Build GtkSourceView 5.0 with Visual Studio

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

Collabora - x64 Native Tools Command Prompt for VS 2019

Run the test application:

C:\src\gtksourceview>C:\gnome\bin\gtksourceview5-widget.exe

Collabora - GtkSourceView Test

Bonus: Build GTK4's GStreamer media backend with Visual Studio

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: subprojects/gst-build.wrap.

[wrap-git]
url=https://gitlab.freedesktop.org/gstreamer/gst-build.git
revision=main

[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.

Collabora - GTK4's GStreamer media backend with Visual Studio

What's next?

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!

Search the newsroom

Latest Blog Posts

Now streaming: Collabora XDC 2025 presentations

02/12/2025

As an active member of the freedesktop community, Collabora was busy at XDC 2025. Our graphics team delivered five talks, helped out in…

Implementing Bluetooth LE Audio & Auracast on Linux systems

24/11/2025

LE Audio introduces a modern, low-power, low-latency Bluetooth® audio architecture that overcomes the limitations of classic Bluetooth®…

Strengthening KernelCI: New architecture, storage, and integrations

17/11/2025

Collabora’s long-term leadership in KernelCI has delivered a completely revamped architecture, new tooling, stronger infrastructure, and…

Font recognition reimagined with FasterViT-2

11/11/2025

Collabora extended the AdobeVFR dataset and trained a FasterViT-2 font recognition model on millions of samples. The result is a state-of-the-art…

Expanding access to XR: Google Cardboard comes to Monado

31/10/2025

Collabora has advanced Monado's accessibility by making the OpenXR runtime supported by Google Cardboard and similar mobile VR viewers so…

From browsers to better drivers: Fixing Zink synchronization the hard way

27/10/2025

By resolving critical synchronization bugs in Zink’s Vulkan–OpenGL interop, Faith Ekstrand paved the way for Zink+NVK to become the default…

Open Since 2005 logo

Our website only uses a strictly necessary session cookie provided by our CMS system. To find out more please follow this link.

Collabora Limited © 2005-2026. All rights reserved. Privacy Notice. Sitemap.