使用CMake Visual Studio 17 2022生成器导出compile_commands.json方法
解决Visual Studio 2022生成器导出compile_commands.json的变通方案
方案一:使用CMake File API(官方原生支持)
CMake提供的File API不受生成器限制,可直接获取编译命令,操作步骤:
- 在你的CMake构建目录内,创建路径
.cmake/api/v1/query/client-custom(client-custom可替换为任意自定义名称) - 在该路径下创建一个空文件,命名为
compile_commands(无需文件后缀) - 重新触发CMake配置:可以运行
cmake --build .,或者在Visual Studio中重新加载项目 - 配置完成后,在构建目录的
.cmake/api/v1/reply文件夹下,会找到包含compile_commands.json的子目录 - 将这个
compile_commands.json复制到项目根目录,即可供clangd等工具识别
方案二:临时切换Ninja生成器生成编译数据库
如果仅需一次性生成编译命令,后续仍用Visual Studio开发,可按以下步骤操作:
- 在项目根目录新建临时构建目录(如
build-ninja) - 进入该目录,执行CMake命令指定Ninja生成器并开启编译命令导出:
cmake -G "Ninja" -DCMAKE_EXPORT_COMPILE_COMMANDS=ON .. - 命令执行完成后,
build-ninja目录下会自动生成compile_commands.json - 将文件复制到项目根目录即可,后续可继续使用原Visual Studio构建目录开发
方案三:用第三方工具解析VS项目文件
部分工具可直接解析Visual Studio的.vcxproj文件生成编译数据库,例如compiledb:
- 先通过pip安装工具:
pip install compiledb - 然后指定VS项目路径生成:
compiledb -p path/to/your/project.vcxproj
内容的提问来源于stack exchange,提问作者Daniel Aviv
相关产品推荐
相关产品推荐

