如下图所示,如果我们使用的是windows系统,当我们编写好C++文件之后,执行run code命令,就会出现的下面的错误提示:
g++: error: testCodeRunnner.cpp: No such file or directory
g++: fatal error: no input files
compilation terminated.
仔细分行上面的运行命令:
cd “d:\temp” && g++ testCodeRunnner.cpp -o testCodeRunnner && "d:\temp"testCodeRunnner
实际上,这行命令包含三个步骤:
(1)进入到cpp文件所在的目录:cd “d:\temp”
(2)在文件所在目录将文件编译成可以执行文件: g++ testCodeRunnner.cpp -o testCodeRunnner
(3)运行编译之后的可执行文件,d:\temp"testCodeRunnner
出现错误的原在于第一个步骤,通过上面的图可以看到,由于我们当前所在的目录是c盘下面,但是我们的文件在d:\temp, windows系统中不能直接cd到另外一个盘。也就是说,第一个命令cd “d:\temp” 是不能从c盘切换到D盘的。如果我们需要从一个盘切换到另外一个盘,需要在cd命令前加上 /d 字段,完整命令格式为: cd /d 绝对路径。比如上述命令就需要变成:cd /d “d:\temp”
找到问题的原因之后,就能解决这个问题了
(1)第一种方法就是,手动切换到文件所在的盘之后,然后再执行run code命令。上面提到命令失败的主要原因是,cd 命令不能跨盘切换,因此可以先将当前目录切换到d盘,直接输入 d: 然后回车就可以切换到d盘了
(2)另外一种就在run code命令中加上 /d 字段,防止从一个盘切换到另外一个盘时失败。
进入到Code Runner的设置 - > extension settings
然后修改json配置文件:
从配置文件中可以看看到,json中为不同的语言·都配置不同的命令,以 C++为例:
可以看到c++的执行命令是下面这一行:
cd $dir && g++ $fileName -o $fileNameWithoutExt && fileNameWithoutExt
由于cd $dir 这个命名在需要切换的不同的盘时失效,我们自己加上/d字段就好了:
cd /d $dir && g++ $fileName -o $fileNameWithoutExt && fileNameWithoutExt效果如下:
可以看到,尽管我们执行run code的命令时,我们还在在c盘目录,c++文件位于d盘中,但是命令还是执行成功了,并且我们可以发现,命令之后之后,当前目录已经切换到我们c++文件所在的目录了。
至此,问题解决了~