https://www.youtube.com/watch?v=2gIyu09UEC8

To have autocomplete etc you need a compile_commands.json file, which can be created by the following command (source)

colcon build --cmake-args -DCMAKE_EXPORT_COMPILE_COMMANDS=ON

or alternatively adding this in your CMakeList.txt

set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

It will end up in the build directory. For this to be seen by vscode (sometimes), you need to add a file in your .vscode called c_cpp_properties.json which points to this json file.

{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [],
            "compilerPath": "/usr/bin/gcc",
            "cStandard": "gnu17",
            "cppStandard": "gnu++14",
            "intelliSenseMode": "linux-gcc-x64",
            "compileCommands": "${workspaceFolder}/build/compile_commands.json"
        }
    ],
    "version": 4
}

If clangd does not work

Specify path in .vscode/settings.json

{
	"clangd.path": "/usr/bin/clangd-XX"
}