目前尚不清楚您想要实现什么。在您提供的链接中,作者正在从源代码构建 LLVM,这就是编译数据库 ( compile_commands.json) 引用这些源的原因。
通常,要在使用 CMake 构建源代码树时构建编译数据库,您需要为其提供-DCMAKE_EXPORT_COMPILE_COMMANDS=ON标志。
因此,您链接的博客文章在哪里调用
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON path/to/llvm/sources
...您可以为自己的源代码树交换源代码的路径:
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON this/is/my/source/tree/path
...应该在当前(构建)目录中生成 json 文件。如文章中所述,您可能希望将该文件符号链接到源代码树的根目录,然后从那里运行您的工具。
这是我编写并有时使用的(非常)简单的构建脚本。也许它对你有帮助(显然适应你自己的需要)。它应该从源代码树的根目录运行。
#!/usr/bin/env sh
type=Debug
if ! [[ -z "$1" ]]; then
type="$1"
mkdir -p build/$type
shift
fi
# Configure build
cmake -S . -B build/$type -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_BUILD_TYPE=$type .
# Build
cmake --build build/$type --parallel 4 --config $type "$@"
ln -fs build/$type/compile_commands.json .