6

Meson & VSCode: Develop your project in a modern IDE

 1 year ago
source link: https://www.collabora.com/news-and-blog/blog/2023/04/18/meson-and-vscode-develop-your-project-modern-ide/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Meson & VSCode: Develop your project in a modern IDE

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 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 recent version of Meson and its 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.

meson-vscode-syntax.png

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.

meson-vscode-compile.png

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.

meson-vscode-sidebar.png

Likewise, the sidebar contains all unit tests that are sorted per subproject. Clicking one of them will run it.

meson-vscode-tests.png

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.

meson-vscode-intellisense.png

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.

meson-vscode-launch.png

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.

meson-vscode-debugger.png

See GStreamer's launch.json file as example: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/blob/main/.vscode/launch.json.


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK