Windows10+VS2015编译OpenCV报错:'setlocal'未被识别,求解决方案
解决Windows 10+VS2015编译OpenCV时
setlocal未识别的错误 我之前也碰到过一模一样的问题,这个错误核心原因是编译流程里调用的命令解释器不是Windows默认的cmd.exe,要么是被替换成了Git Bash、PowerShell这类工具,要么是系统环境变量出了问题,导致setlocal这个CMD内置命令无法被正常识别。下面是几个经过验证的可行解决办法:
方法1:检查VS的命令提示符配置
- 打开Visual Studio 2015,点击顶部菜单栏的工具 -> 选项
- 在弹出窗口里找到项目和解决方案 -> VC++项目设置
- 查看命令行选项中的「命令解释器」是否设为
$(ComSpec)(这是系统默认CMD的路径变量),如果不是,手动修改为这个值,重启VS后重新编译
方法2:修复系统环境变量中的COMSPEC值
- 右键此电脑 -> 属性 -> 高级系统设置 -> 环境变量
- 在系统变量里找到
COMSPEC,确认它的值是C:\Windows\system32\cmd.exe - 如果值不对就修改成正确路径;如果这个变量不存在,直接新建并设置为上述路径,之后重启电脑再尝试编译
方法3:清理CMake缓存并重新配置
- 找到之前CMake生成的build目录,删除里面所有文件(或者直接新建一个空的build目录)
- 重新打开CMake,选择OpenCV源码目录和新的build目录,点击Configure,确保选择的是VS2015 x64编译器
- 配置完成后点击Generate,打开新生成的解决方案重新编译
方法4:以管理员身份运行VS
有时候权限不足会导致命令解释器调用异常,右键Visual Studio 2015的快捷方式,选择以管理员身份运行,再打开解决方案编译试试
如果以上方法都没效果,可以排查下最近是否安装了Git Bash、WSL这类终端工具,它们可能修改了系统默认命令解释器,尝试暂时卸载或禁用后再重新编译。
内容的提问来源于stack exchange,提问作者ZQ Hu
相关产品推荐
相关产品推荐

