Windows CLI中临时移除PATH内Git路径以解决CMake报错
临时修改PATH(仅当前命令行会话有效,不影响全局)
这是最推荐的方式——不需要改动全局环境变量,只在当前编译用的cmd窗口生效,重启后PATH会自动恢复,完全不影响Git的正常使用。
确认当前PATH中的Git路径
先运行命令查看当前PATH内容,确认Git相关路径存在:echo %PATH%你会看到类似
C:\Program Files\Git\cmd和C:\Program Files\Git\usr\bin的条目。移除Git相关路径
使用set命令的字符串替换功能,精准剔除Git的路径:set PATH=%PATH:C:\Program Files\Git\cmd;=% set PATH=%PATH:C:\Program Files\Git\usr\bin;=%注意末尾的分号
;是必须的,这能避免误删其他包含相似字符串的路径。验证修改效果
运行以下命令确认sh.exe已不在PATH中,且MinGW的make工具能被正确找到:where sh.exe # 正常应返回"INFO: Could not find files for the given pattern(s)." where make.exe # 应指向你的MinGW安装路径,比如C:\MinGW\bin\make.exe执行CMake构建
现在可以正常运行CMake生成MinGW Makefiles并编译了:cmake -G "MinGW Makefiles" .. make
替代方案:优先让MinGW工具被找到
如果你不想移除Git路径,也可以把MinGW的bin目录放到PATH最前端,让CMake优先使用MinGW的工具,避开Git的sh.exe干扰:
set PATH=C:\MinGW\bin;%PATH% # 替换成你的MinGW实际安装路径
永久修改PATH(需管理员权限,影响全局环境)
如果希望所有新打开的cmd窗口都自动排除Git路径,可以通过命令行修改系统环境变量:
以管理员身份打开命令提示符
右键点击开始菜单,选择「Windows终端(管理员)」或「命令提示符(管理员)」。查看当前系统PATH
运行命令获取系统级的PATH配置:reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v PATH修改并设置新的PATH
把输出中的PATH值复制出来,手动移除C:\Program Files\Git\cmd;和C:\Program Files\Git\usr\bin;部分,然后用setx命令写入系统环境变量:setx /M PATH "修改后的完整PATH字符串"注意:
/M参数表示修改系统环境变量,必须有管理员权限。如果遇到超长PATH被截断的问题,可以改用PowerShell命令:$envPath = [Environment]::GetEnvironmentVariable("PATH", "Machine") $newPath = $envPath -replace "C:\\Program Files\\Git\\cmd;","" -replace "C:\\Program Files\\Git\\usr\\bin;","" [Environment]::SetEnvironmentVariable("PATH", $newPath, "Machine")生效方式
修改完成后,需要重启所有打开的命令行窗口,或者注销再登录,新的PATH配置才会生效。
内容的提问来源于stack exchange,提问作者curlywei

