我正在尝试使用cl(通过Visual Studio 2019安装)在VS Code中编译C / C ++代码。我已经按照MS网站的建议设置了json文件,
https://code.visualstudio.com/docs/cpp/config-msvc,
但是我仍然收到错误:
cl.exe : The term 'cl.exe' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
这是我的json文件:
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"windowsSdkVersion": "10.0.17763.0",
"compilerPath": "C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.21.27702/bin/Hostx64/x64/cl.exe",
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "msvc-x64"
}
],
"version": 4
}
{
"version": "2.0.0",
"tasks": [
{
"label": "msvc build",
"type": "shell",
"command": "cl.exe",
"args": [
"/EHsc",
"/Zi",
"/Fe:",
"helloworld.exe",
"test.c"
],
"group": {
"kind": "build",
"isDefault": true
},
"presentation": {
"reveal":"always"
},
"problemMatcher": "$msCompile"
}
]
}
答案 0 :(得分:6)
我一直在按照Configure VS Code for Microsoft C++中的说明来解决同一问题。幸运的是,我找到了这个问题和@Romen的出色答案。但是,这是他解决方案中的一些棘手问题:
.vscode
文件夹中,这样我们在制作新项目时就不能直接复制一个文件夹。对于这两个缺陷,我做了一些修改,以便使用Microsoft ++调试新项目更加方便。
在build.bat
文件中,更改语法
cl.exe /EHsc /Zi /Fe: helloworld.exe helloworld.cpp
到
cl.exe /EHsc /Zi /Fe: %1.exe %1.cpp
buil.bat
移至.vscode
文件夹,并将"command": "build.bat"
移至"command": ".\\.vscode\\build.bat ${fileBasenameNoExtension}"
。这很简单,但是我希望它可以帮助像我这样的新手,并为更复杂的情况提供更好的解决方案:)。
答案 1 :(得分:2)
对我有用的东西
在此guide之后,我在select * from users where name = 'John' and (select * votes > 100 or title is null) is null
中进行了更改:
task.json
然后我的{
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "cl.exe build active file",
"command": "build.bat", //calling build.bat instead
"args": [
"/Zi",
"/EHsc",
"/Fe:",
"${fileDirname}\\${fileBasenameNoExtension}.exe",
"${file}"
],
"problemMatcher": [
"$msCompile"
],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
(打开开发人员终端时将调用build.bat
)
sDevCmd.bat
然后 Ctrl + Shift + B 。
答案 2 :(得分:0)
cl.exe:术语“ cl.exe”未被识别为cmdlet,函数,脚本文件或可运行程序的名称。检查名称的拼写,或者是否包含路径,请确认路径正确,然后重试。
您的"msvc build"
任务仅为其命令指定"cl.exe"
,没有前导路径。问题是cl.exe
不在您的PATH上,也不在VS Code在运行构建任务时可以看到的任何地方。
一个解决方案是使用“ Visual Studio”版本的“开发人员命令提示符”打开VS Code。此版本的命令提示符定义了Visual Studio生成工具的位置,以便从该cmd提示符运行的任何程序或命令都能够找到“ cl.exe”之类的程序。
还有一个我更喜欢使用的解决方案,就是为您的构建任务编写一个批处理脚本。
:: set the path to your visual studio vcvars script, it is different for every version of Visual Studio.
set VS2017TOOLS="C:\Program Files(x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat"
:: make sure we found them
if not exist %VS2017TOOLS% (
echo VS 2017 Build Tools are missing!
exit
)
:: call that script, which essentially sets up the VS Developer Command Prompt
call %VS2017TOOLS%
:: run the compiler with your arguments
cl.exe /EHsc /Zi /Fe: helloworld.exe test.c
exit
然后必须更改您的任务以运行批处理脚本:
{
"label": "msvc build",
"type": "shell",
"command": "build.bat",
"group": {
"kind": "build",
"isDefault": true
},
"presentation": {
"reveal":"always"
},
"problemMatcher": "$msCompile"
}
以这种方式使用批处理脚本的优点是,您无需从开发人员命令提示符运行VS Code,并且$msCompile
问题匹配器仍将能够在VS Code中显示错误和警告。
答案 3 :(得分:0)
VSCode 的默认终端没有 cl.exe PATH ,您需要使用 Developer Command Prompt :
https://code.visualstudio.com/docs/cpp/config-msvc:
要打开VS的Developer Command Prompt,请在Windows“开始”菜单中开始输入“ developer”,您应该看到它出现在建议列表中。确切名称取决于您安装的Visual Studio或Visual Studio Build Tools版本。单击该项目以打开提示。
D:\workspace
,项目名称是myproject
Ctrl+Shift+B
构建