文档摘要

CDB的概念不仅限于Clang,但基于Clang的工具广泛使用它。例如,Clang编译器本身可以使用编译数据库,来了解如何编译项目中的文件。像Clang-Tidy和Clangd(用于IDE中的语言支持)这样的工具,也可以使用它来确保它们理解构建时的代码,使它们的分析和转换更加精确。 要使用带有CDB的clang-tidy,通常不需要任何配置。Clang-tidy可以自动检测并使用项目根目录中的compilecommands.json文件。 另一方面,Clang工具提供了一个特殊选项,-p,定义如下: -p \  is used to read a compile command database 可以使用这个选项在Clang源代码中的一个文件上运行Clang-Tidy。

CDB的概念不仅限于Clang,但基于Clang的工具广泛使用它。例如,Clang编译器本身可以使用编译数据库,来了解如何编译项目中的文件。像Clang-Tidy和Clangd(用于IDE中的语言支持)这样的工具,也可以使用它来确保它们理解构建时的代码,使它们的分析和转换更加精确。

要使用带有CDB的clang-tidy,通常不需要任何配置。Clang-tidy可以自动检测并使用项目根目录中的compile_commands.json文件。

另一方面,Clang工具提供了一个特殊选项,-p,定义如下:

-p <build-path> is used to read a compile command database

可以使用这个选项在Clang源代码中的一个文件上运行Clang-Tidy。如果克隆源代码的llvm-project文件夹中运行,看起来会像这样:

$` ./install/bin/clang-tidy clang/lib/Parse/Parser.cpp -p ./build/
\end{shell}

\begin{center}
图 9.5:在LLVM代码库上运行Clang-Tidy
\end{center}

在安装它的文件夹中运行Clang-Tidy,如第5.2.1节"构建和测试Clang-Tidy"中所述。我们还指定了包含CDB的构建文件夹作为项目根文件夹。

Clang-Tidy是积极使用CDB在大型项目上执行的工具,另一个工具是Clangd。

\mySamllsection{针对大型项目的Clangd设置}

Clangd提供了一个特殊的配置选项来指定CDB的路径。这个选项定义如下:

\begin{shell}`$ clangd –help ...
–compile-commands-dir=<string> - Specify a path to look for
compile_commands.json.If the path is invalid, clangd will search
in the current directory and parent paths of each source file. ...

图 9.6:来自’clangd –help’输出的’–compile-commands-dir’选项的描述

可以在Visual Studio Code的设置面板中指定这个选项,如下所示:

如果打开Clang源代码中的一个文件,将能够访问Clangd提供的导航支持,如下所示:

将编译命令与Clang工具(如Clang-Tidy或Clangd)集成,为探索和分析您的源代码提供了一个强大的工具。


发布者: 作者: 转发
评论区 (0)
U