Ensure the kernel is built (at least, all *.cmd files should be generated):
$ make defconfig $ make Clone this repository as ".vscode":
$ git clone git@github.com:amezin/vscode-linux-kernel.git .vscode Generate compile_commands.json:
$ python .vscode/generate_compdb.py If you are not compiling kernel for x64, change intelliSenseMode in c_cpp_properties.json. Possible values as of vscode-cpptools 1.0.1:
gcc-x86gcc-x64gcc-armgcc-arm64
Open the project:
$ code . Kernel can be built with separate output directory:
$ make O=../linux-build defconfig $ make O=../linux-build In this case, you should pass the directory to generate_compdb.py:
$ python .vscode/generate_compdb.py -O ../linux-build compile_commands.json will still be generated in the current directory (root of the linux repository). Unfortunately, tasks.json will not work out of the box in this configuration (TODO).
If you build your module with this command:
$ make -C $KDIR M=$PWD modules You could generate compile_commands.json with:
$ python .vscode/generate_compdb.py -O $KDIR $PWD Example: https://github.com/amezin/nzxt-rgb-fan-controller-dkms