首页 > 其他分享 >Bazel 如何生成 clangd/clang-tidy 所需的 compile_commands.json

Bazel 如何生成 clangd/clang-tidy 所需的 compile_commands.json

时间:2023-08-06 17:12:20浏览次数:45  
标签:commands clangd tidy hedron refresh compile bazel json

VSCode 中如何使用 clang-tidy

  1. 安装 clangd 插件
  2. 禁用 ms-cpp 插件(VSCode 会自动提示有冲突)
  3. 生成 clangd 所需的 compile_commands.json 文件

如何生成 compile_commands.json 文件

  1. 修改 WORKSPACE,添加以下内容
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

http_archive(
    name = "hedron_compile_commands",

    # 建议把下面两处 commit hash 换成 github 上最新的版本
    url = "https://github.com/hedronvision/bazel-compile-commands-extractor/archive/ed994039a951b736091776d677f324b3903ef939.tar.gz",
    strip_prefix = "bazel-compile-commands-extractor-ed994039a951b736091776d677f324b3903ef939",
)

load("@hedron_compile_commands//:workspace_setup.bzl", "hedron_compile_commands_setup")
hedron_compile_commands_setup()
  1. 在 BUILD 文件中增加一个用于生成 compile_commands.json 文件的 target
load("@hedron_compile_commands//:refresh_compile_commands.bzl", "refresh_compile_commands")

refresh_compile_commands(
    name = "refresh_compile_commands",
    # 指定目标 target 及其编译选项/参数(.bazelrc 中已有的参数/选项无需重复添加)
    targets = {
      "//src/my_component1:my_executable1": "--config=aarch64_qnx",
      "//src/my_component2:my_executable2": "--config=aarch64_linux",
    },
)
  1. 运行 bazel run 命令生成 compile_commands.json 文件
bazel run :refresh_compile_commands

注意事项

  • 需要保证能够访问 github

参考链接

标签:commands,clangd,tidy,hedron,refresh,compile,bazel,json
From: https://www.cnblogs.com/tengzijian/p/17462562.html

相关文章

  • Test Commands-Functions下——创建自定义Test Case
    TestCommands-Functions下_哔哩哔哩_bilibili基于上一节所创建的测试实例,编写多个不同车速的TestCase,若仅改变信号EngineSpeed的值,也要重复编写多次,花费时间长且易出错,这时可通过Functions功能自定义一个TestCase模板,并基于该模板添加多个TestCase用例1)选择Functions——Tes......
  • Test Commands-Functions上
    TestCommands-Functions上_哔哩哔哩_bilibili1.对于冗长的测试用例,随着添加的内容越多,同时伴随人员编写时间的增加,后续修改测试用例内容,排查错误的难度也随之上升,这时可以使用vTESTstudio自带的工具"Functions"对测试用例进行优化。2.Functions栏在TestTableEditor左下角;用......
  • vscode 使用 clangd
    环境要求使用wsl或者MacOS,Linux下同理,暂时不考虑纯winodws。以wsl为例,执行以下指令sudoaptinstallclangclangdlldbcmakemacOS如果安装过xcode工具包,就附带了AppleClang编译器,否则执行brewinstallllvm,然后输入以下指令添加环境变量echo'exportPATH="/usr/local/o......
  • Macros for Build Commands and Properties
    //z2012-5-1712:35:17PMIS2120@CSDNPre:IFNOTEXIST$(IntDir)..\..\libmkdir$(IntDir)..\..\libPost:copy$(IntDir)$(ProjectName).lib$(IntDir)..\..\libupx.exe$(OutDir)../xxx.dll//z2012-5-1712:47:52PMIS2120@CSDNAddacallstatementbeforeal......
  • CMake Commands
    cmake_minimum_requiredcmake_minimum_required(VERSION<min>[...<policy_max>][FATAL_ERROR])#限制CMake的版本支持范围cmake_minimum_required(VERSION3.16.3)#限制CMake最低版本3.16.3cmake_minimum_required(VERSION3.16.3...3.20.0)#限制CMake版本最低3.16.3,只要C......
  • 获取compile_commands.json的方式
    CMake工程这个最简单,在CMakeLists.txt中加set(CMAKE_EXPORT_COMPILE_COMMANDSon),或者在cmake的命令中加-DCMAKE_EXPORT_COMPILE_COMMANDS.即可产生CMakefileMakefile借助compiledb程序可以生成compile_commands.json文件。compiledb-nmake-f/path/to/Makefile#......
  • Bash Commands and Shell Scripts
    为了考试准备一下吧这门课对这个领域的知识教的太浅,考的却很难,必须要额外自学一点东西VariablesinShellScripts首先是ShellScripts中的变量概念:ShellScripts中的变量只有一种类型stringDefinevariableinshellscripts对于一个变量赋值语句a=xxx,xxx必须是字......
  • dotnet commands
     dotnet--list-sdks dotnetnewwebapi--no-https dotnetnewpage-nCounter  dotnetnewglobaljson--sdk-version6.0.100--outputFirstProjectdotnetnewmvc--no-https--outputFirstProject--frameworknet6.0dotnetnewsln-oFirstProjectdotn......
  • The Vim commands cheat sheet (ubuntu) vi编辑器常用的命令及快捷键
    HowtoExit :q[uit]QuitVim.Thisfailswhenchangeshavebeenmade.:q[uit]!Quitwithoutwriting.:cq[uit]Quitalways,withoutwriting.:wqWritethecurrentfileandexit.:wq!Writethecurrentfileandexitalways.:wq{file}Writeto{file}.Exitifnotedi......
  • ubuntu ftp 基本FTP命令 Basic FTP Commands
    YoucanuseFTPtotransferfilesfromyourMacOSXSnowLeopardcomputerwithanFTPserverbyusingthecommand-lineinterface(CLI);tousetheCLI,opena......