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
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:
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: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")