vscode中gcc编译器中文路径调试成功方法
先说结论:
最终效果:可以实现在该工作区内任意cpp文件编译后生成exe在一处且仅有一个,无论cpp文件什么命名(当然得符合文件命名标准 )( ̄▽ ̄)~*
熟悉vscode的runcode的佬可能就已经猜到我是要走固定编译路径的路子了,yes
一句话概括本文:直接安装 run code 插件后再其设置里将 "cpp": xxxxx $fileNameWithoutExt 中的 $fileNameWithoutExt 都改成想要的exe固定地址即可,对于特殊字符需要再用转义字符修饰 $fileName 属性解决文件名无法带括号之类的特殊符号问题
原理:
cpp在中文路径编译条件一:编译时保证exe文件名和路径不包含中文
根据前人的发现分析
exe文件可以自动生成,也就是说编译的时候是可以出现中文的,问题出现在运行时,由于默认生成的exe文件是“《原先的源文件名称》. exe”,就是exe中出现中文导致无法调试的
于是可以得到条件一:只要在编译时保证exe文件名不包含中文就好了(o゚▽゚)o
需要的操作,修改Run code里的Setting.json中的"cpp":里的属性
条件二:修改 launch.json和tasks.json下的路径固定exe生成位置
为了保证exe路径不包含中文,要固定exe只在一处文件夹下生成(用久了也有算法题根本不需要随处生成exe的原因,跑起来就行,多了exe最后还得自己删)
操作:
先修改.vscode里的launch和tasks里的各处,图中位置都要改为固定路径
这两个文件悬浮在' "变量":'上有详细功能注释,方便理解
如果想了解更多可以看我以前的一篇也是这问题的文章,不过当时见识较为浅薄,追求的效果不太大众,大家只用关注解释部分便好了╮(╯﹏╰)╭
1.launch.json
2.tasks.json
2-1:
2-2:
再修改Run code里的Setting.json
- 找到Run Code插件的设置
- 找到Executor Map
- setting.josn中找到"cpp"
原本应该是:
"cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
其中 `$fileName`为运行文件名,`$fileNameWithoutExt`为编译和执行路径,将他们分别修改为 \"$fileName\" (实现文件名独立不被特殊字符干扰),和自己在task和launch里选定的生成路径(带有exe)
"cpp": "cd $dir && g++ \"$fileName\" -o C:/Ep/mobile-code/exe/a.exe && C:/Ep/mobile-code/exe/a.exe",//完美还能解决括号问题,无论命名多奇葩都能运行了这下
到此处,以普遍理性而论已经可以运行,记得launch和tasks里还有一些地方是修改g++编译器路径的
launch
tasks,注意一处为具体路径,一处为文件夹路径(不带exe)
完美收工!٩(๑>◡<๑)۶