如何记录(几乎)所有Visual C++命令及命令行开关,并查看构建命令?
记录Visual C++构建命令并生成类似compile_commands.json的方法
使用Visual Studio IDE构建时记录命令
- 开启详细构建日志:
- 打开项目属性,依次进入「配置属性」→「C/C++」→「命令行」
- 若需要显示头文件包含关系,可在「附加选项」里加
/showIncludes;接着切到「常规」选项卡,把「详细程度」设为「诊断」(或「详细」,诊断级别会输出完整命令行参数) - 重新构建项目,「输出」窗口会显示所有
cl.exe的完整命令行。右键输出窗口选「全部保存」就能把日志导出成文本文件。
使用命令行构建时记录命令
- 用MSBuild构建:
执行命令时加/v:detailed或/v:diagnostic参数,比如:
要保存日志的话直接重定向到文件:msbuild YourProject.vcxproj /t:Rebuild /v:diagnosticmsbuild YourProject.vcxproj /t:Rebuild /v:diagnostic > build_log.txt - 用nmake构建:
要么修改Makefile开启详细输出,要么执行时带/v参数(详细输出)或/n参数(只显示命令不执行),比如:nmake /f YourMakefile.mak /v > build_log.txt
生成类似compile_commands.json的结构化命令记录
Visual Studio本身没法直接生成这个文件,但有两种可行方法:
- 用CMake生成项目:
如果你的项目是CMake管理的,生成VS项目时加-DCMAKE_EXPORT_COMPILE_COMMANDS=ON参数,CMake会自动在构建目录生成compile_commands.json,里面包含所有编译命令的详细参数。 - 解析构建日志手动生成:
写个Python或PowerShell脚本,解析之前保存的构建日志,提取cl.exe的命令行,按compile_commands.json的格式整理。格式示例:
解析时要注意提取每个编译命令的工作目录、完整命令和对应源文件。[ { "directory": "C:\\YourProject\\src", "command": "cl.exe /c /EHsc /I\"include\" main.cpp", "file": "main.cpp" } ]
内容的提问来源于stack exchange,提问作者Oliver
相关产品推荐
相关产品推荐

