April 18, 2023
VSCode, like its fully open-source sibling VSCodium, is a popular IDE (integrated development environment) from Microsoft that is highly configurable with extensions. Meson is the open source build system used by most GNOME and Freedesktop projects. Meson provides introspection data to integrate your project into your IDE, for tasks such as building and running your project. Meson also provides an official VSCode extension that uses that information to provide all functionalities presented here.
Examples below require a recent version of Meson and its VSCode extension:
The extension provides complete Meson language grammar support for
The first time a Meson project is opened, VSCode will ask if you wish to configure it. By default it will run
meson setup builddir, default options are configuration in the extension settings.
Once your project is configured, or if it was already configured manually in
builddir/, the extension will:
All tasks can be found in
Terminal → Run Task..., or with
Ctrl+Shift+P shortcut, search for
meson in the dropdown menu.
The default build task will (re)compile the whole project. It can be triggered with
In addition, individual targets can be compiled by simply clicking them in the Meson sidebar. At the top you'll find the main project targets; subproject targets can be found below.
Each target also has an
open icon to open the
meson.build file where that target is defined and a submenu that lists all source files used to build that target. This allows browsing the project source tree by targets instead of relying on the filesystem hierarchy.
Likewise, the sidebar contains all unit tests that are sorted per subproject. Clicking one of them will run it.
To run all tests from all subprojects at once, search
Meson: Run tests in the
Terminal → Run Task... menu, or
Meson: Run Unit Tests →
If Microsoft's Intellisense extension is installed, it will be automatically configured to use the
compile_commands.json file generated by Meson in your build directory. This allows VSCode's C and C++ syntax analyzer to find and include the paths and CFLAGS needed.
Meson provides a developer environment to run executables from your project without installing it. It consists on a set of environment variables that needs to be set in order to properly run the project, such as
GST_PLUGIN_PATH (GStreamer), etc.
The Meson VSCode extension exports that environment into a file that can be used by VSCode's launch.json file's
If your project provides a
F5 will run the program in the debugger, allowing you to inspect a variable's value and step line by line into your code directly in VSCode.
See GStreamer's launch.json file as example: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/blob/main/.vscode/launch.json.
Now included in our Debian images & available via our GitLab, you can build a complete, working BL31 (Boot Loader stage 3.1), and replace…
Back in 2022, after a series of issues were found in its design, I made the call to rework some of WirePlumber's fundamentals in order to…
Continuing our Kernel Integration series, we're excited to introduce DRM-CI, a groundbreaking solution that enables developers to test their…
This is the fourth and final part in a series on persian-rug, a Rust crate for interconnected objects. We've touched on the two big limitations:…
One of the key high-level challenges of building Mesa drivers these days is figuring out how to best share code between a Vulkan driver…
Google Open Source have chosen their second group of winners for the 2023 Google Open Source Peer Bonus Program, and Arnaud Ferraris, Senior…