如何在Sublime中创建适配含空格目录的C++构建系统?
解决Sublime Text 3编译带空格路径C++文件的问题
这个坑我之前踩过!问题根源很简单:Windows命令行把路径里的空格当成了参数分隔符,所以系统只读到C:\Users\Bryan就认为是完整命令了,后面的Adams PC\Documents\C++被当成了无效参数,自然报错。
只需要修改你的C++构建系统配置,给所有包含空格的路径加上双引号就行,步骤如下:
- 打开Sublime Text,点击顶部菜单栏的
Tools->Build System->New Build System - 把默认模板内容替换成下面的配置代码:
{ "cmd": ["g++.exe", "-std=c++11", "${file}", "-o", "\"${file_path}/${file_base_name}\""], "shell": true, "working_dir": "${file_path}", "selector": "source.c++", "variants": [ { "name": "Run", "cmd": ["cmd.exe", "/c", "\"${file_path}/${file_base_name}\" & pause"] } ] }
- 按
Ctrl+S保存,命名为C++ (MinGW).sublime-build,保存路径默认就是Sublime的构建系统目录,直接确认即可 - 回到你的C++文件,点击
Tools->Build System,选择刚才保存的C++ (MinGW),然后按Ctrl+B编译,Ctrl+Shift+B选择Run运行
关键修改点说明:
- 给
-o后的输出路径"${file_path}/${file_base_name}"加上双引号,确保命令行把整个路径识别为一个完整的输出文件路径 - Run变体里的执行命令同样把程序路径用双引号包裹,避免运行时也出现路径解析错误
- 保留
"shell": true,让Sublime通过系统shell执行命令,确保带引号的路径能被正确解析
如果之前的构建系统里还有其他涉及路径的参数,比如包含头文件的-I参数,只要路径带空格,都记得用双引号包起来哦。
内容的提问来源于stack exchange,提问作者Akash Kumar
相关产品推荐
相关产品推荐

