vscode + clangd 配置代码阅读环境

参考

关键点

  • vscode的clangd插件
    image

    配置:
    image

    --compile-commands-dir=${workspaceFolder}
    --background-index
    --completion-style=detailed
    --header-insertion=never
    --log=info
    
  • linux上clangd的路径
    image
    把所有的clangd路径都设置一下

  • .clangd文件
    调整传给clangd的参数,因为实际使用的可能是GCC,它的参数可能不适合clangd
    下面是一个.clangd文件的参考:

    $ cat .clangd
    CompileFlags:
    	Remove: [-fno-allow-store-data-races, -fconserve-stack, -mabi=lp64]
    
  • 设置要排除的文件
    对于drivers目录下的子目录比较多,可以使用脚本来生成,然后手动剔除:

    find drivers/ arch/ fs/ -type d -maxdepth 1 | sort | awk '{printf("\"\*\*/%s\": true,\n", $1);}'
    

    下面是一个参考:

    点击查看代码
    {
    	"files.exclude": {
    		"**/.gitignore": true,
    		"**/Documentation": true,
    		"**/tools": true,
    		"**/scripts": true,
    		"**/samples": true,
    		"**/LICENSES": true,
    		"**/usr": true,
    		"**/include/dt-bindings": true,
    
    		"**/arch/alpha": true,
    		"**/arch/arc": true,
    		"**/arch/arm": true,
    		"**/arch/arm64": false,
    		"**/arch/c6x": true,
    		"**/arch/csky": true,
    		"**/arch/h8300": true,
    		"**/arch/hexagon": true,
    		"**/arch/ia64": true,
    		"**/arch/m68k": true,
    		"**/arch/microblaze": true,
    		"**/arch/mips": true,
    		"**/arch/nds32": true,
    		"**/arch/nios2": true,
    		"**/arch/openrisc": true,
    		"**/arch/parisc": true,
    		"**/arch/powerpc": true,
    		"**/arch/riscv": true,
    		"**/arch/s390": true,
    		"**/arch/sh": true,
    		"**/arch/sparc": true,
    		"**/arch/um": true,
    		"**/arch/unicore32": true,
    		"**/arch/x86": false,
    		"**/arch/xtensa": true,
    
    		"**/drivers/accessibility": true,
    		"**/drivers/acpi": true,
    		"**/drivers/amba": false,
    		"**/drivers/android": false,
    		"**/drivers/ata": true,
    		"**/drivers/atm": true,
    		"**/drivers/auxdisplay": true,
    		"**/drivers/base": false,
    		"**/drivers/bcma": true,
    		"**/drivers/block": false,
    		"**/drivers/bluetooth": true,
    		"**/drivers/bus": true,
    		"**/drivers/cdrom": true,
    		"**/drivers/char": false,
    		"**/drivers/clk": true,
    		"**/drivers/clocksource": true,
    		"**/drivers/connector": false,
    		"**/drivers/counter": false,
    		"**/drivers/cpufreq": false,
    		"**/drivers/cpuidle": false,
    		"**/drivers/crypto": true,
    		"**/drivers/dax": false,
    		"**/drivers/dca": true,
    		"**/drivers/devfreq": false,
    		"**/drivers/dio": true,
    		"**/drivers/dma": true,
    		"**/drivers/dma-buf": false,
    		"**/drivers/edac": true,
    		"**/drivers/eisa": true,
    		"**/drivers/extcon": true,
    		"**/drivers/firewire": true,
    		"**/drivers/firmware": true,
    		"**/drivers/fpga": true,
    		"**/drivers/fsi": true,
    		"**/drivers/gnss": true,
    		"**/drivers/gpio": true,
    		"**/drivers/gpu": true,
    		"**/drivers/greybus": true,
    		"**/drivers/hid": true,
    		"**/drivers/hsi": true,
    		"**/drivers/hv": true,
    		"**/drivers/hwmon": true,
    		"**/drivers/hwspinlock": true,
    		"**/drivers/hwtracing": true,
    		"**/drivers/i2c": true,
    		"**/drivers/i3c": true,
    		"**/drivers/ide": true,
    		"**/drivers/idle": true,
    		"**/drivers/iio": false,
    		"**/drivers/infiniband": true,
    		"**/drivers/input": false,
    		"**/drivers/interconnect": true,
    		"**/drivers/iommu": false,
    		"**/drivers/ipack": true,
    		"**/drivers/irqchip": false,
    		"**/drivers/isdn": true,
    		"**/drivers/leds": true,
    		"**/drivers/lightnvm": true,
    		"**/drivers/macintosh": true,
    		"**/drivers/mailbox": true,
    		"**/drivers/mcb": true,
    		"**/drivers/md": false,
    		"**/drivers/media": true,
    		"**/drivers/memory": true,
    		"**/drivers/memstick": true,
    		"**/drivers/message": true,
    		"**/drivers/mfd": false,
    		"**/drivers/mi-reclaim": false,
    		"**/drivers/misc": false,
    		"**/drivers/mmc": false,
    		"**/drivers/mtd": true,
    		"**/drivers/mux": true,
    		"**/drivers/net": true,
    		"**/drivers/nfc": true,
    		"**/drivers/ntb": true,
    		"**/drivers/nubus": true,
    		"**/drivers/nvdimm": true,
    		"**/drivers/nvme": true,
    		"**/drivers/nvmem": true,
    		"**/drivers/of": false,
    		"**/drivers/opp": false,
    		"**/drivers/oprofile": true,
    		"**/drivers/parisc": true,
    		"**/drivers/parport": true,
    		"**/drivers/pci": true,
    		"**/drivers/pcmcia": true,
    		"**/drivers/perf": true,
    		"**/drivers/phy": true,
    		"**/drivers/pinctrl": true,
    		"**/drivers/platform": true,
    		"**/drivers/pnp": true,
    		"**/drivers/power": false,
    		"**/drivers/powercap": true,
    		"**/drivers/pps": true,
    		"**/drivers/ps3": true,
    		"**/drivers/ptp": true,
    		"**/drivers/pwm": true,
    		"**/drivers/rapidio": true,
    		"**/drivers/ras": true,
    		"**/drivers/regulator": true,
    		"**/drivers/remoteproc": true,
    		"**/drivers/reset": true,
    		"**/drivers/rpmsg": true,
    		"**/drivers/rtc": true,
    		"**/drivers/rtmm": true,
    		"**/drivers/s390": true,
    		"**/drivers/sbus": true,
    		"**/drivers/scsi": true,
    		"**/drivers/sfi": true,
    		"**/drivers/sh": true,
    		"**/drivers/siox": true,
    		"**/drivers/slimbus": true,
    		"**/drivers/soc": false,
    		"**/drivers/soundwire": true,
    		"**/drivers/spi": true,
    		"**/drivers/spmi": true,
    		"**/drivers/ssb": true,
    		"**/drivers/staging": false,
    		"**/drivers/target": true,
    		"**/drivers/tc": true,
    		"**/drivers/tee": false,
    		"**/drivers/thermal": false,
    		"**/drivers/thunderbolt": true,
    		"**/drivers/tty": false,
    		"**/drivers/uio": false,
    		"**/drivers/usb": true,
    		"**/drivers/vfio": true,
    		"**/drivers/vhost": true,
    		"**/drivers/video": true,
    		"**/drivers/virt": false,
    		"**/drivers/virtio": false,
    		"**/drivers/visorbus": true,
    		"**/drivers/vlynq": true,
    		"**/drivers/vme": true,
    		"**/drivers/w1": true,
    		"**/drivers/watchdog": true,
    		"**/drivers/xen": true,
    		"**/drivers/zorro": true,
    
    		"**/fs/9p": false,
    		"**/fs/adfs": true,
    		"**/fs/affs": true,
    		"**/fs/afs": true,
    		"**/fs/autofs": false,
    		"**/fs/befs": true,
    		"**/fs/bfs": true,
    		"**/fs/btrfs": true,
    		"**/fs/cachefiles": false,
    		"**/fs/ceph": true,
    		"**/fs/cifs": true,
    		"**/fs/coda": true,
    		"**/fs/configfs": false,
    		"**/fs/cramfs": true,
    		"**/fs/crypto": true,
    		"**/fs/debugfs": false,
    		"**/fs/devpts": false,
    		"**/fs/dlm": true,
    		"**/fs/ecryptfs": true,
    		"**/fs/efivarfs": true,
    		"**/fs/efs": true,
    		"**/fs/erofs": true,
    		"**/fs/exfat": true,
    		"**/fs/exportfs": true,
    		"**/fs/ext2": false,
    		"**/fs/ext4": true,
    		"**/fs/f2fs": true,
    		"**/fs/fat": true,
    		"**/fs/freevxfs": true,
    		"**/fs/fscache": true,
    		"**/fs/fuse": true,
    		"**/fs/gfs2": true,
    		"**/fs/hfs": true,
    		"**/fs/hfsplus": true,
    		"**/fs/hostfs": true,
    		"**/fs/hpfs": true,
    		"**/fs/hugetlbfs": false,
    		"**/fs/incfs": true,
    		"**/fs/iomap": false,
    		"**/fs/isofs": true,
    		"**/fs/jbd2": true,
    		"**/fs/jffs2": true,
    		"**/fs/jfs": true,
    		"**/fs/kernfs": false,
    		"**/fs/lockd": true,
    		"**/fs/minix": true,
    		"**/fs/nfs": true,
    		"**/fs/nfs_common": true,
    		"**/fs/nfsd": true,
    		"**/fs/nilfs2": true,
    		"**/fs/nls": true,
    		"**/fs/notify": true,
    		"**/fs/ntfs": true,
    		"**/fs/ocfs2": true,
    		"**/fs/omfs": true,
    		"**/fs/openpromfs": true,
    		"**/fs/orangefs": true,
    		"**/fs/overlayfs": false,
    		"**/fs/proc": false,
    		"**/fs/pstore": false,
    		"**/fs/qnx4": true,
    		"**/fs/qnx6": true,
    		"**/fs/quota": true,
    		"**/fs/ramfs": false,
    		"**/fs/reiserfs": true,
    		"**/fs/romfs": true,
    		"**/fs/squashfs": false,
    		"**/fs/sysfs": false,
    		"**/fs/sysv": false,
    		"**/fs/tracefs": false,
    		"**/fs/ubifs": true,
    		"**/fs/udf": true,
    		"**/fs/ufs": true,
    		"**/fs/unicode": true,
    		"**/fs/verity": false,
    		"**/fs/xfs": true,
    	},
    	"search.exclude": {
    		"**/.gitignore": true,
    		"**/Documentation": true,
    		"**/tools": true,
    		"**/scripts": true,
    		"**/samples": true,
    		"**/LICENSES": true,
    		"**/usr": true,
    		"**/include/dt-bindings": true,
    
    		"**/arch/alpha": true,
    		"**/arch/arc": true,
    		"**/arch/arm": true,
    		"**/arch/arm64": false,
    		"**/arch/c6x": true,
    		"**/arch/csky": true,
    		"**/arch/h8300": true,
    		"**/arch/hexagon": true,
    		"**/arch/ia64": true,
    		"**/arch/m68k": true,
    		"**/arch/microblaze": true,
    		"**/arch/mips": true,
    		"**/arch/nds32": true,
    		"**/arch/nios2": true,
    		"**/arch/openrisc": true,
    		"**/arch/parisc": true,
    		"**/arch/powerpc": true,
    		"**/arch/riscv": true,
    		"**/arch/s390": true,
    		"**/arch/sh": true,
    		"**/arch/sparc": true,
    		"**/arch/um": true,
    		"**/arch/unicore32": true,
    		"**/arch/x86": false,
    		"**/arch/xtensa": true,
    
    		"**/drivers/accessibility": true,
    		"**/drivers/acpi": true,
    		"**/drivers/amba": false,
    		"**/drivers/android": false,
    		"**/drivers/ata": true,
    		"**/drivers/atm": true,
    		"**/drivers/auxdisplay": true,
    		"**/drivers/base": false,
    		"**/drivers/bcma": true,
    		"**/drivers/block": false,
    		"**/drivers/bluetooth": true,
    		"**/drivers/bus": true,
    		"**/drivers/cdrom": true,
    		"**/drivers/char": false,
    		"**/drivers/clk": true,
    		"**/drivers/clocksource": true,
    		"**/drivers/connector": false,
    		"**/drivers/counter": false,
    		"**/drivers/cpufreq": false,
    		"**/drivers/cpuidle": false,
    		"**/drivers/crypto": true,
    		"**/drivers/dax": false,
    		"**/drivers/dca": true,
    		"**/drivers/devfreq": false,
    		"**/drivers/dio": true,
    		"**/drivers/dma": true,
    		"**/drivers/dma-buf": false,
    		"**/drivers/edac": true,
    		"**/drivers/eisa": true,
    		"**/drivers/extcon": true,
    		"**/drivers/firewire": true,
    		"**/drivers/firmware": true,
    		"**/drivers/fpga": true,
    		"**/drivers/fsi": true,
    		"**/drivers/gnss": true,
    		"**/drivers/gpio": true,
    		"**/drivers/gpu": true,
    		"**/drivers/greybus": true,
    		"**/drivers/hid": true,
    		"**/drivers/hsi": true,
    		"**/drivers/hv": true,
    		"**/drivers/hwmon": true,
    		"**/drivers/hwspinlock": true,
    		"**/drivers/hwtracing": true,
    		"**/drivers/i2c": true,
    		"**/drivers/i3c": true,
    		"**/drivers/ide": true,
    		"**/drivers/idle": true,
    		"**/drivers/iio": false,
    		"**/drivers/infiniband": true,
    		"**/drivers/input": false,
    		"**/drivers/interconnect": true,
    		"**/drivers/iommu": false,
    		"**/drivers/ipack": true,
    		"**/drivers/irqchip": false,
    		"**/drivers/isdn": true,
    		"**/drivers/leds": true,
    		"**/drivers/lightnvm": true,
    		"**/drivers/macintosh": true,
    		"**/drivers/mailbox": true,
    		"**/drivers/mcb": true,
    		"**/drivers/md": false,
    		"**/drivers/media": true,
    		"**/drivers/memory": true,
    		"**/drivers/memstick": true,
    		"**/drivers/message": true,
    		"**/drivers/mfd": false,
    		"**/drivers/mi-reclaim": false,
    		"**/drivers/misc": false,
    		"**/drivers/mmc": false,
    		"**/drivers/mtd": true,
    		"**/drivers/mux": true,
    		"**/drivers/net": true,
    		"**/drivers/nfc": true,
    		"**/drivers/ntb": true,
    		"**/drivers/nubus": true,
    		"**/drivers/nvdimm": true,
    		"**/drivers/nvme": true,
    		"**/drivers/nvmem": true,
    		"**/drivers/of": false,
    		"**/drivers/opp": false,
    		"**/drivers/oprofile": true,
    		"**/drivers/parisc": true,
    		"**/drivers/parport": true,
    		"**/drivers/pci": true,
    		"**/drivers/pcmcia": true,
    		"**/drivers/perf": true,
    		"**/drivers/phy": true,
    		"**/drivers/pinctrl": true,
    		"**/drivers/platform": true,
    		"**/drivers/pnp": true,
    		"**/drivers/power": false,
    		"**/drivers/powercap": true,
    		"**/drivers/pps": true,
    		"**/drivers/ps3": true,
    		"**/drivers/ptp": true,
    		"**/drivers/pwm": true,
    		"**/drivers/rapidio": true,
    		"**/drivers/ras": true,
    		"**/drivers/regulator": true,
    		"**/drivers/remoteproc": true,
    		"**/drivers/reset": true,
    		"**/drivers/rpmsg": true,
    		"**/drivers/rtc": true,
    		"**/drivers/rtmm": true,
    		"**/drivers/s390": true,
    		"**/drivers/sbus": true,
    		"**/drivers/scsi": true,
    		"**/drivers/sfi": true,
    		"**/drivers/sh": true,
    		"**/drivers/siox": true,
    		"**/drivers/slimbus": true,
    		"**/drivers/soc": false,
    		"**/drivers/soundwire": true,
    		"**/drivers/spi": true,
    		"**/drivers/spmi": true,
    		"**/drivers/ssb": true,
    		"**/drivers/staging": false,
    		"**/drivers/target": true,
    		"**/drivers/tc": true,
    		"**/drivers/tee": false,
    		"**/drivers/thermal": false,
    		"**/drivers/thunderbolt": true,
    		"**/drivers/tty": false,
    		"**/drivers/uio": false,
    		"**/drivers/usb": true,
    		"**/drivers/vfio": true,
    		"**/drivers/vhost": true,
    		"**/drivers/video": true,
    		"**/drivers/virt": false,
    		"**/drivers/virtio": false,
    		"**/drivers/visorbus": true,
    		"**/drivers/vlynq": true,
    		"**/drivers/vme": true,
    		"**/drivers/w1": true,
    		"**/drivers/watchdog": true,
    		"**/drivers/xen": true,
    		"**/drivers/zorro": true,
    
    		"**/fs/9p": false,
    		"**/fs/adfs": true,
    		"**/fs/affs": true,
    		"**/fs/afs": true,
    		"**/fs/autofs": false,
    		"**/fs/befs": true,
    		"**/fs/bfs": true,
    		"**/fs/btrfs": true,
    		"**/fs/cachefiles": false,
    		"**/fs/ceph": true,
    		"**/fs/cifs": true,
    		"**/fs/coda": true,
    		"**/fs/configfs": false,
    		"**/fs/cramfs": true,
    		"**/fs/crypto": true,
    		"**/fs/debugfs": false,
    		"**/fs/devpts": false,
    		"**/fs/dlm": true,
    		"**/fs/ecryptfs": true,
    		"**/fs/efivarfs": true,
    		"**/fs/efs": true,
    		"**/fs/erofs": true,
    		"**/fs/exfat": true,
    		"**/fs/exportfs": true,
    		"**/fs/ext2": false,
    		"**/fs/ext4": true,
    		"**/fs/f2fs": true,
    		"**/fs/fat": true,
    		"**/fs/freevxfs": true,
    		"**/fs/fscache": true,
    		"**/fs/fuse": true,
    		"**/fs/gfs2": true,
    		"**/fs/hfs": true,
    		"**/fs/hfsplus": true,
    		"**/fs/hostfs": true,
    		"**/fs/hpfs": true,
    		"**/fs/hugetlbfs": false,
    		"**/fs/incfs": true,
    		"**/fs/iomap": false,
    		"**/fs/isofs": true,
    		"**/fs/jbd2": true,
    		"**/fs/jffs2": true,
    		"**/fs/jfs": true,
    		"**/fs/kernfs": false,
    		"**/fs/lockd": true,
    		"**/fs/minix": true,
    		"**/fs/nfs": true,
    		"**/fs/nfs_common": true,
    		"**/fs/nfsd": true,
    		"**/fs/nilfs2": true,
    		"**/fs/nls": true,
    		"**/fs/notify": true,
    		"**/fs/ntfs": true,
    		"**/fs/ocfs2": true,
    		"**/fs/omfs": true,
    		"**/fs/openpromfs": true,
    		"**/fs/orangefs": true,
    		"**/fs/overlayfs": false,
    		"**/fs/proc": false,
    		"**/fs/pstore": false,
    		"**/fs/qnx4": true,
    		"**/fs/qnx6": true,
    		"**/fs/quota": true,
    		"**/fs/ramfs": false,
    		"**/fs/reiserfs": true,
    		"**/fs/romfs": true,
    		"**/fs/squashfs": false,
    		"**/fs/sysfs": false,
    		"**/fs/sysv": false,
    		"**/fs/tracefs": false,
    		"**/fs/ubifs": true,
    		"**/fs/udf": true,
    		"**/fs/ufs": true,
    		"**/fs/unicode": true,
    		"**/fs/verity": false,
    		"**/fs/xfs": true,
    	}
    }
    
posted @ 2025-06-21 08:38  dolinux  阅读(486)  评论(0)    收藏  举报