We're hiring!
*

Meson & VSCode: Develop your project in a modern IDE

Xavier Claessens avatar

Xavier Claessens
April 18, 2023

Share this post:

Reading time:

Meson VSCode Extension

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:

  • Meson 1.1.0
  • Extension 1.9.0

Syntax highlighting

The extension provides complete Meson language grammar support for meson.build and meson_options.txt files.

Automatic project configuration

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:

  • Add build and test tasks.
  • Setup C/C++ Intellisense.
  • Create an environment file to be used to launch commands in Meson's developer environment.

Build and test tasks

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+PMeson: Run Unit Testsall.

C/C++ Intellisense

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.

Launch task in developer environment

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.

Comments (3)

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

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

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






Allowed tags: <b><i><br>Add a new comment:


Search the newsroom

Latest Blog Posts

Automatic regression handling and reporting for the Linux Kernel

14/03/2024

In continuation with our series about Kernel Integration we'll go into more detail about how regression detection, processing, and tracking…

Almost a fully open-source boot chain for Rockchip's RK3588!

21/02/2024

Now included in our Debian images & available via our GitLab, you can build a complete, working BL31 (Boot Loader stage 3.1), and replace…

What's the latest with WirePlumber?

19/02/2024

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…

DRM-CI: A GitLab-CI pipeline for Linux kernel testing

08/02/2024

Continuing our Kernel Integration series, we're excited to introduce DRM-CI, a groundbreaking solution that enables developers to test their…

Persian Rug, Part 4 - The limitations of proxies

23/01/2024

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:…

How to share code between Vulkan and Gallium

16/01/2024

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…

Open Since 2005 logo

We use cookies on this website to ensure that you get the best experience. By continuing to use this website you are consenting to the use of these cookies. To find out more please follow this link.

Collabora Ltd © 2005-2024. All rights reserved. Privacy Notice. Sitemap.