Xavier Claessens
April 18, 2023
Reading time:
Want to develop your Meson project in a modern IDE? Make sure to install Meson VSCode extension which is now fully functional with the recent release of Meson 1.1.0!
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 meson.build
and meson_options.txt
files.
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 Ctrl+Shift+B
shortcut.
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 Ctrl+Shift+P
→ Meson: Run Unit Tests
→ all
.
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 LD_LIBRARY_PATH
, 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 envFile
attribute.
If your project provides a .vscode/launch.json
file, 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.
08/10/2024
Having multiple developers work on pre-merge testing distributes the process and ensures that every contribution is rigorously tested before…
15/08/2024
After rigorous debugging, a new unit testing framework was added to the backend compiler for NVK. This is a walkthrough of the steps taken…
01/08/2024
We're reflecting on the steps taken as we continually seek to improve Linux kernel integration. This will include more detail about the…
27/06/2024
With each board running a mainline-first Linux software stack and tested in a CI loop with the LAVA test framework, the Farm showcased Collabora's…
26/06/2024
WirePlumber 0.5 arrived recently with many new and essential features including the Smart Filter Policy, enabling audio filters to automatically…
12/06/2024
Part 3 of the cmtp-responder series with a focus on USB gadgets explores several new elements including a unified build environment with…
Comments (3)
q4a:
Apr 18, 2023 at 06:02 PM
What about breakpoints?
https://github.com/microsoft/vscode-cpptools/issues/9503 - issue about breakpoints with strcmp didn't fixed since 24.06.2022
https://github.com/microsoft/vscode-cpptools/issues/5676 - issue about string breakpoints condition like text=="from" didn't fixed since 23.06.2020
https://github.com/microsoft/vscode-cpptools/issues/714 - issue about breakpoints with hit count didn't fixed since 11.05.2017.. 6 years have passed((
Reply to this comment
Reply to this comment
Xavier Claessens:
Apr 18, 2023 at 06:34 PM
Hi,
Debugging indeed has limitations, but those issues are not related to Meson integration. Unfortunately we are not affiliated with Microsoft so there is nothing we can do about them.
Reply to this comment
Reply to this comment
q4a:
Apr 18, 2023 at 06:51 PM
Topic says "Develop your project in a modern IDE".
Debugging is a significant part of the development, so it should not be ignored.
I'm using QtCreator for cmake and meson projects - it's open source and has better debugging support.
It's good when you have different options, but VS Code is less convenient for now.
Reply to this comment
Reply to this comment
Add a Comment