Windows 10下Git Bash执行CMake -S . -B build命令报错‘源目录不存在’的原因咨询
问题原因及解决办法
这个问题大概率是两个原因中的一个导致的,咱们逐个分析:
1. CMake版本不支持-S/-B参数
cmake -S <source> -B <build>这种直接指定源目录和构建目录的语法是CMake 3.13版本才引入的新特性。如果你的CMake版本低于3.13,执行这条命令时,CMake会完全不认识-S和-B这两个选项,它会把后续的build当成「源目录」参数来处理——而此时build文件夹还没创建,自然会报错说这个目录不存在。
而你用的第二种命令(进入build目录后执行cmake -G ... ..)是CMake的传统用法,所有版本都支持,所以能正常运行。
2. Git Bash的参数解析问题
Git Bash基于bash shell,对带空格的参数的引号处理逻辑和Windows CMD不一样。你用双引号包裹"Visual Studio 15 2017"时,Git Bash可能会把引号去掉,并将空格作为参数分隔符,导致CMake接收到的生成器参数被拆成了Visual、Studio、15、2017多个独立参数。这种情况下,CMake会因为无法正确解析命令行参数,误把build当成源目录,从而触发报错。
解决办法
针对版本问题
先检查你的CMake版本:
cmake --version
如果版本低于3.13,去CMake官网下载并安装最新版本即可。
针对参数解析问题
在Git Bash中,换用单引号包裹带空格的参数,或者用反斜杠转义空格:
选项1(单引号):
cmake -S . -B build -G 'Visual Studio 15 2017' -A 'Win32'
选项2(反斜杠转义):
cmake -S . -B build -G Visual\ Studio\ 15\ 2017 -A Win32
这样修改后,CMake就能正确识别生成器参数,-S和-B的逻辑也能正常工作了。
内容的提问来源于stack exchange,提问作者Irbis
相关产品推荐
相关产品推荐

