VSCode 配置 C++ 编译环境 您所在的位置:网站首页 vscode终端生成exe文件 VSCode 配置 C++ 编译环境

VSCode 配置 C++ 编译环境

2024-03-13 00:00| 来源: 网络整理| 查看: 265

花费了将近一个半小时才把 Windows 运行 VSCode 编译 C 的环境搭建起来,参照 VSCode 的官方文档操作,运行时还是“Duang”的反复报错,网上的帖子有很多,大多数作为入门贴,操作起来着实不方便,而且对一些问题的处理细节不到位,让人照着操作可能会成功,但不知其所以然。 今天把自己的血泪史和理解整理成文章,为常年奋战在 Windows 一线开发的程序员在首次搭建 VSCode 编译环境时提供一点点参考。 废话不多说,一起来看看我今天遇到的坑和解决过程。

前提

1.已经安装 VS2019 Preview 版本。重点不是 Visual Studio 的版本,而是安装时必须选择 C/C++ 运行时库。 2.下载安装 VSCode ,并更新至最新版。

官方教程

本节不详细介绍操作的具体流程,只是简单罗列关键步骤和文档结果,详细的过程和参数说明见 VSCode 的官方文档:https://code.visualstudio.com/docs/cpp/config-msvc#_the-term-clexe-is-not-recognized

准备工作

详细内容参见官方文档的操作步骤,虽然是英文,但内容图文并茂关键操作都有高亮显示和工具下载的跳转链接,非常易读,关键步骤如下:

安装 VSCode运行 VSCode,安装 C/C++ extension for VS Code 插件。安装 Microsoft Visual C++ (MSVC) 工具包。检查 MSVC 工具包的是否安装成功。 创建示例工程

1.创建示例代码,安装编程惯例,第一个程序一定是 HelloWorld,本次也不例外。 新建空文件夹,使用 VSCode 设置为工程目录,使用 VSCode 创建 helloworld.cpp 文件,并加入示例代码。

#include #include #include using namespace std; int main() { vector msg {"Hello", "C++", "World", "from", "VS Code", "and the C++ extension!"}; for (const string& word : msg) { cout "type": "shell", "label": "C/C++: cl.exe 生成活动文件", // 此处的内容与系统语言有关,中文语言则显示中文 "command": "cl.exe", "args": [ "/Zi", "/EHsc", "/Fe:", "${fileDirname}\\${fileBasenameNoExtension}.exe", // 第一个坑! "${file}" // 第二个坑! ], "problemMatcher": ["$msCompile"], "group": { "kind": "build", "isDefault": true } } ] }

2.2 创建 launch.json 文件 按照官方文档介绍,创建默认的配置文件如下:

{ // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "cl.exe - 生成和调试活动文件", "type": "cppvsdbg", "request": "launch", "program": "${fileDirname}\\${fileBasenameNoExtension}.exe", "args": [], "stopAtEntry": true, "cwd": "${workspaceFolder}", "environment": [], "console": "externalTerminal", "preLaunchTask": "C/C++: cl.exe 生成活动文件" } ] }

2.3 创建 c_cpp_properties.json 文件 按照官方文档,选择 C/C++ 的 UI 配置方式创建出如下的配置文件:

{ "configurations": [ { "name": "Win32", "includePath": [ "${workspaceFolder}/**" ], "defines": [ "_DEBUG", "UNICODE", "_UNICODE" ], "windowsSdkVersion": "10.0.18362.0", "compilerPath": "C:/Program Files (x86)/Microsoft Visual Studio/2019/Preview/VC/Tools/MSVC/14.25.28508/bin/Hostx64/x64/cl.exe", "cStandard": "c17", "cppStandard": "c++17", "intelliSenseMode": "windows-msvc-x64" } ], "version": 4 }

其中 "compilerPath" 的内容与当前环境已安装的编译器有关,不需要过度关心,如果在 UI 配置环节没有检测到编译器,则需要回到开篇处,先安装相关的 C/C++ 编译器。

代码编译

配置完毕,开始编译,遇到如下坑:

坑1:未初始化VS环境变量

问题现象:VSCode 在左侧导航栏选择 “Debug” 标签页,运行设置选择配置文件中所罗列的 “cl.exe - 生成和调试活动文件”,操作截图如下: 错误原因:VSCode 的终端无法正常识别 cl.exe ,在终端中输入 cl.exe 果然没有看到帮助信息的提示内容。 解决方案:

方案1(不推荐):将 VS 的环境变量全部加入计算机环境变量,添加内容如下: //在Path中添加cl.exe所在文件夹路径。若未找到,直接VS的安装目录下搜索cl.exe即可 C:\Program Files\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\Hostx86\x86; //在系统变量中新建变量INCLUDE,添加cl.exe的包含目录 C:\Program Files\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include; C:\Program Files\Windows Kits\10\Include\10.0.17763.0\shared; C:\Program Files\Windows Kits\10\Include\10.0.17763.0\ucrt; C:\Program Files\Windows Kits\10\Include\10.0.17763.0\um; C:\Program Files\Windows Kits\10\Include\10.0.17763.0\winrt; //在系统变量中新建变量LIB,添加cl.exe的库目录 C:\Program Files\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\lib\x86; C:\Program Files\Windows Kits\10\Lib\10.0.17763.0\um\x86; C:\Program Files\Windows Kits\10\Lib\10.0.17763.0\ucrt\x86; ———————————————— 版权声明:本文为CSDN博主「北冥有鱼wyh」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_34801642/article/details/105453161

方案2(推荐):使用 MSVC 的命令行工具启动 VSCode,此方式较方案1来说,具有更强的灵活性,对其他工程影响小。

Windows 开始菜单搜索 “VS” 选择命令行工具,我的电脑是安装 VS2019 Preview,我选择运行 “x64 Native Tools Command Prompt for VS 2019 Preview” 工具。启动后可以尝试运行 cl.exe 可以看到正常的命令行工具提示信息。 ********************************************************************** ** Visual Studio 2019 Developer Command Prompt v16.5.0-pre.2.0 ** Copyright (c) 2019 Microsoft Corporation ********************************************************************** [vcvarsall.bat] Environment initialized for: 'x64' C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview>cl.exe 用于 x64 的 Microsoft (R) C/C++ 优化编译器 19.25.28508.3 版 版权所有(C) Microsoft Corporation。保留所有权利。 用法: cl [ 选项... ] 文件名... [ /link 链接选项... ] 在初始化环境变量的终端里启动 VSCode,输入 "code" 即可启动 VSCode。当然也可以运行 VSCode 的安装路径(*.exe)。

为什么执行 “x64 Native Tools Command Prompt for VS 2019 Preview” 会初始化 MSVC 的环境变量? 这个问题可以自行百度,有一定基础的程序员可以通过文件属性,查看快捷方式的启动命令,实际上这里的快捷方式是调用 MSVC 命令行工具并在启动时完成当前版本 VS 环境的初始化操作,上述流程对于使用 NMake 构建的开发者来说一定不陌生。

启动上一步创建成功的工作目录,在 VSCode 的中断中输入 cl.exe 即可看到提示信息。运行程序 坑2:task.json 部分设置未更改

点击 VSCode 左侧的 "Debug" 按钮,选择运行,提示如下错误:

正在启动生成... cl.exe /Zi /EHsc /nologo /Fe: C:\Users\Documents\C\HelloVSCode\.vscode\tasks.exe C:\Users\Documents\C\HelloVSCode\.vscode\tasks.json cl: ������ warning D9024 :�޷�ʶ���Դ�ļ����͡�C:\Users\Documents\C\HelloVSCode\.vscode\tasks.json�����ٶ�Ϊ�����ļ� C:\Users\Documents\C\HelloVSCode\.vscode\tasks.json : fatal error LNK1107: �ļ���Ч����: �޷��� 0x1DC ����ȡ 生成已完成,但出现错误. The terminal process failed to launch (exit code: -1). Terminal will be reused by tasks, press any key to close it.

错误原因:从输出的信息来看 cl.exe 编译的文件并非期望的 “helloworld.exe” 和 “helloworld.cpp” 文件而是 task.json 文件,问题就出在这里,创建 task.json 之后需要将参数 “args” 中的参数进行修改,其中包括:

"${fileDirname}\\${fileBasenameNoExtension}.exe" 改为当前应用程序的文件名 "helloworld.exe";"${file}" 改为 "helloworld.cpp" 修改后的配置 task.json 配置内容如下: { "version": "2.0.0", "tasks": [ { "type": "cppbuild", "label": "C/C++: cl.exe 生成活动文件", "command": "cl.exe", "args": [ "/Zi", "/EHsc", "/nologo", "/Fe:", "helloworld.exe", "helloworld.cpp" ], "options": { "cwd": "${workspaceFolder}" }, "problemMatcher": [ "$msCompile" ], "group": { "kind": "build", "isDefault": true }, "detail": "编译器: cl.exe" } ] }

提个小问题,为什么配置文件中不是设置文件的全路径? 原因是下文的配置选项中已设置工作目录 “cwd”: “${workspaceFolder}”,如果代码文件不在当前工程的根目录则需要写入相对路径。

坑3:launch.json 部分配置未更改

问题的原因同 task.json 配置,其中 "program": "${fileDirname}\\${fileBasenameNoExtension}.exe" 运行程序的名称并未修改为当前工程的名称, 参照 task.json 将 "${fileDirname}\\${fileBasenameNoExtension}.exe" 内容修改为 "helloworld.exe",修改配置如下:

{ // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "cl.exe - 生成和调试活动文件", "type": "cppvsdbg", "request": "launch", "program": "helloworld.exe", "args": [], "stopAtEntry": true, "cwd": "${workspaceFolder}", "environment": [], "console": "externalTerminal", "preLaunchTask": "C/C++: cl.exe 生成活动文件" } ] }

再次调试运行,代码进入熟悉的调试界面,熟悉的快捷键,仿佛回到 Visual Studio 的调试。

运行调试

开始调试程序,让 VSCode 成为日常办公的利器,本篇踩坑记录到此为止。

总结 遇到问题的原因,缺少 MSVC 环境变量的机制,初始配置环境找不到 cl.exe 是第一个拦路虎,知晓原因后问题迎刃而解。编译报错,这一点主要是看使用者的细心程度,仔细的阅读官方文档或者查看错误提示信息,都可以找到解决问题的蛛丝马迹。留意每一个错误中的提示信息,都会是解决问题的启发点。 参考链接 VSCode MSVC 配置官方文档:https://code.visualstudio.com/docs/cpp/config-msvc#_the-term-clexe-is-not-recognizedVSCode 变量说明:https://code.visualstudio.com/docs/editor/variables-referenceVisual Studio 环境变量设置:https://blog.csdn.net/qq_34801642/article/details/105453161


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有