5

在此处输入图像描述 我正在尝试使用可用于 VSCode 的 Code Runner 扩展来运行一个简单的程序“primeRange.cpp”。

我在VSCode中选择了我的默认终端作为git bash,但是当我点击右上角的Run时,它会将命令发送到 bash 以使用 g++ 编译器运行程序,但是当没有这样的文件或目录时出现错误存在具有给定名称的目录。

我怎样才能解决这个问题?

当我在代码运行器上按运行时,如何自定义要在 bash 上运行的命令?

我想将命令设置为:

cd "c:\\Users\\Tushar\\Desktop\\contests\\Practice" && g++ primeRange.cpp -o primeRange && "c:\\Users\\Tushar\\Desktop\\contests\\Practice\\primeRange"

或者

cd "c:\Users\Tushar\Desktop\contests\Practice" && g++ primeRange.cpp -o primeRange && "c:\Users\Tushar\Desktop\contests\Practice\primeRange"

如果我在 bash 上手动执行上述任何一个命令,那么它就可以工作。

所以我基本上想知道如何在路径中包含可执行文件名

"c:\Users\Tushar\Desktop\contests\Practice\primeRange"

而不是在引号之后:

"c:\Users\Tushar\Desktop\contests\Practice\"primeRange

这是我的settings.json在此处输入图像描述

我已将 settings.json 中的路径更新为:

"code-runner.executorMap": {
        "cpp": "cd $dir && g++ -std=c++11 $fileName -o $fileNameWithoutExt && \"./$fileNameWithoutExt.exe\""
    },

但现在我得到提示而不是要求标准输入,如下所示: 在此处输入图像描述

解决

修复1:

将settings.json中的code-runner.executorMap属性更新为

"code-runner.executorMap": {
            "cpp": "cd $dirWithoutTrailingSlash && g++ -std=c++11 $fileName -o $fileNameWithoutExt && ./$fileNameWithoutExt"
        }

修复 2:

settings.json中添加另一个属性code-runner.terminalRoot为:

"code-runner.terminalRoot": "/"
4

1 回答 1

6

我在很长一段时间内都遇到了同样的问题,经过数小时的在线游荡,我想我找到了解决方案。

Windows 和 Unix/Linux 有不同的地址命名方式。要寻址 d 驱动器中名为 my_codes 的文件夹,windows 将具有以下内容:-“D:\my_codes”,而 Unix/Linux 将具有类似的内容-“/D/my_codes/”。值得注意的区别是使用了不同的斜杠('/' & \)。Unix 将 \ 视为分隔符。因此,输入 bash 的地址实际上并不是 bash 的正确地址。这就是为什么它会抛出错误“没有这样的文件或目录”。

您是否注意到,就在 bash 向您抛出错误“没有这样的文件或目录”之前,它从地址中删除了所有反斜杠并呈现给您 'c:UsersTusharDesktopcontestPractice' ?

幸运的是,“Code Runner”开发人员已经解决了这个问题。

您所要做的就是在 setting.json 文件中包含以下内容:

"code-runner.terminalRoot":"/",

我希望我能有所帮助。快乐编码。

于 2020-07-05T15:15:02.670 回答