【发布时间】:2018-09-22 18:28:12
【问题描述】:
所以我正在使用 Visual Studio Code 来构建和运行一个简单的 C++ 程序。我使用 tasks.json 来处理编译:(基于此:How to compile C++ code with VS Code and cl
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "Build Test",
"type": "shell",
"command": "cl",
"args": [
"/MDd",
"/W4",
"/EHsc",
"/ZI",
"/std:c++11",
"/Od",
"/Fe:${workspaceFolder}/Debug/test.exe",
"/Fd:${workspaceFolder}/Debug/",
"/Fo:${workspaceFolder}/Debug/",
"main.cpp"
],
"group": {
"kind": "build",
"isDefault": true
}
},
{
"label": "Build Release",
"type": "shell",
"command": "cl",
"args": [
"/MD",
"/W4",
"/EHsc",
"/std:c++11",
"/O2",
"/Fe:${workspaceFolder}/Release/test.exe",
"/Fd:${workspaceFolder}/Release/",
"/Fo:${workspaceFolder}/Release/",
"main.cpp"
]
}
]
}
但是当我尝试构建时,我得到以下输出:
Executing task: cl /MDd /W4 /EHsc /ZI /std:c++11 /Od "/Fe:G:\My Drive\Semester 3\CS 341\Project\Project 2/Debug/test.exe" "/Fd:G:\My Drive\Semester 3\CS 341\Project\Project 2/Debug/" "/Fo:G:\My Drive\Semester 3\CS 341\Project\Project 2/Debug/" main.cpp <
'C:\Program' is not recognized as an internal or external command,
operable program or batch file.
我会注意,我确实通过以下方式更改了设置:
"terminal.integrated.shellArgs.windows": [
"/k",
"C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\VC\\Auxiliary\\Build\\vcvars64.bat"
],
"terminal.integrated.shell.windows": "C:\\Windows\\System32\\cmd.exe"
我相信这就是“C:\Program”的来源。 我只想在 Visual Studio 中构建和执行 C++ 程序,因此不胜感激。
编辑:
所以我决定将C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\VC\\Auxiliary\\Build添加到PATH变量中,然后我将设置改为:
"terminal.integrated.shellArgs.windows": [
"/k",
"vcvars64.bat",
],
"terminal.integrated.shell.windows": "C:\\Windows\\System32\\cmd.exe"
导致错误变成:
> Executing task: cl /MDd /W4 /EHsc /ZI /std:c++11 /Od "/Fe:G:\My Drive\Semester 3\CS 341\Project\Project 2/Debug/test.exe" "/Fd:G:\My Drive\Semester 3\CS 341\Project\Project 2/Debug/" "/Fo:G:\My Drive\Semester 3\CS 341\Project\Project 2/Debug/" main.cpp <
[ERROR:vcvarsall.bat] Invalid argument found : /d
[ERROR:vcvarsall.bat] Invalid argument found : /c
[ERROR:vcvarsall.bat] Invalid argument found : cl
[ERROR:vcvarsall.bat] Invalid argument found : /MDd
[ERROR:vcvarsall.bat] Invalid argument found : /W4
[ERROR:vcvarsall.bat] Invalid argument found : /EHsc
[ERROR:vcvarsall.bat] Invalid argument found : /ZI
[ERROR:vcvarsall.bat] Invalid argument found : /std:c++11
[ERROR:vcvarsall.bat] Invalid argument found : /Od
The syntax of the command is incorrect.
【问题讨论】:
-
听起来你需要弄清楚如何在文件路径中传递空格。或者只是使用旧 8.3 天中的“短”路径名。
-
从来没有看到需要这样做,因为设置的更改有效。你会建议我做什么?
-
"\"C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\VC\\Auxiliary\\Build\\vcvars64.bat\"" -
对不起,我不知道。除非必须,否则我不会使用 Windows——我是 Unix 人。我只是在插话问题似乎是什么。但同样,如果不亲自探索它,我真的不知道。也许尝试在整个路径周围加上转义引号?类似“terminal.integrated.....”...“\”C:\\Program Files (x86)\\Mic.....vcvars64.bat\""。或者也许逃避路径中的空间会起作用?
-
"\"C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\VC\\Auxiliary\\Build\\vcvars64.bat\"" 给出以下错误:'\"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat\"' 不是内部或外部命令、可运行程序或批处理文件.
标签: c++ windows visual-studio-code