I’m developing a program in C++ targeting flatpak, since I’m on an immutable system I’d rather develop for flatpak than try using a container (plus I can’t get SDL to open a window in a container anyway). Everything works with GNOME Builder but it’s not as nice to use as vscode: less syntax highlighting, doesn’t reopen where I left off, can’t debug multiple instances (Not to say I don’t like GNOME Builder - it’s really good and will only get better, it’s just slowing me down at this point). I managed to get the flatpak building and debugging from within code, using the vscode-flatpak extension the only thing not working properly is clangd. I am using the meson build system.
This is probably a bit of a long shot, but has anyone else tried to do this?
BTW I’m not talking about using clangd with the vscode flatpak package
Not sure I follow. I’m talking about using the clangd language server to give me code completion, etc. when developing a flatpak application. I’ve already got it making the package and running it through the vscode debugger
I’m not sure I understand what you’re asking. It seems like you’re asking why your clangd extension isn’t working? But then you say:
BTW I’m not talking about using clangd with the vscode flatpak package
I was asking about getting the clangd extension to work when developing an application against the freedesktop sdk as a flatpak. I’ve worked it out now, thanks for your interest
I’ve worked it out, thanks for the responses, maybe I didn’t word the question properly or something, but here’s what I did for anyone interested in the future:
You only need to do this once for every machine you want to work on.
Add the llvm freedesktop sdk extensions to get a clangd executable to your flatpak manifest:
"sdk-extensions": [ "org.freedesktop.Sdk.Extension.llvm18" ],
Install these extensions:
- Native Debug
- Flatpak
- Meson Build
- clangd (optional)
Run the
Flatpak: Build
command in the command palette (Ctrl+Shift+P
) this might take a minute. Make sure you have the required sdks installed (see the manifest for details).There should now be two folders:
.flatpak
and_build
. There should also be a script generated at.flatpak/meson.sh
. Run:python gen-flatpak-scripts.py
This will generate
.flatpak/gdb.sh
and.flatpak/clangd.sh
. If you want to use the clangd vscode extension extension add this to.vscode/settings.json
:"clangd.path": "./.flatpak/clangd.sh"
Now run the
clangd: Restart language server
command in the command palette (Ctrl+Shift+P
) and you should be good to go!gen-flatpak-scripts.py
:# Simple script to generate scripts to make life easy when using flatpak with vscode import subprocess; def gen_script(outfile, exec): with open(".flatpak/meson.sh", "rt") as fin: with open(outfile, "wt") as fout: for line in fin: fout.write(line.replace("/usr/bin/meson", exec)) subprocess.run(["chmod", "+x", outfile]) # GDB for debugging gen_script(".flatpak/gdb.sh", "/usr/bin/gdb") # clangd for suggestions gen_script(".flatpak/clangd.sh", "/usr/lib/sdk/llvm18/bin/clangd")