Windows Powershell下无需compile_commands.json使用clang-tidy的正确传参方法
在Windows Powershell中正确传递clang-tidy参数解决编译任务错误
问题根源
Windows Powershell的参数解析逻辑与Linux Bash存在差异,主要体现在路径分隔符、=符号的处理上,导致clang-tidy无法正确识别--后的编译参数,进而抛出"expected exactly one compiler job in ''"错误——尽管代码检查功能本身可以正常运行。
修正方案
执行以下调整即可解决问题:
- 将路径中的反斜杠
\替换为正斜杠/(clang在Windows环境下完全支持正斜杠路径,避免Powershell对反斜杠的转义干扰) - 将
--p=file改为--p file(部分clang-tidy版本在Windows下对=形式的参数解析存在兼容问题) - 确保
--后的编译参数格式清晰,避免多余空格或截断
修正后的命令示例
clang-tidy -header-filter=.* --p file --quiet "engine/src/liquid/window/Window.cpp" -- --std=c++20 -isystem ./engine/src -isystem ./vendor/Debug/include -isystem ./platform/base/include
额外验证方案
如果问题仍存在,可以尝试为--后的所有编译参数添加整体引号,确保Powershell完整传递参数:
clang-tidy -header-filter=.* --p file --quiet "engine/src/liquid/window/Window.cpp" -- "--std=c++20 -isystem ./engine/src -isystem ./vendor/Debug/include -isystem ./platform/base/include"
内容的提问来源于stack exchange,提问作者Gasim
相关产品推荐
相关产品推荐

