vsCode 配置c/c++


layout: vscode
title: 环境配置
date: 2022-10-11 04:10:04
tags:


VSCode配置

  • 配置C/C++ 编译环境

    • 安装mingw64

      • 官网

      • https://winlibs.com/ (推荐)

      • https://nuwen.net/mingw.html

        加速下载 https://ghproxy.com/

        打开推荐的链接,然后看下图按步骤下载

        [图片上传失败...(image-289184-1681184309507)]

    • 配置环境变量

      • 下载之后是一个zip压缩包,将其解压之后将mingw64文件夹复制到指定位置(路径中不能出现中文 推荐D盘的根目录)
      • 复制(带bin目录 )的路径
      • [图片上传失败...(image-43246f-1681184309507)]
      • 右键此电脑 -> 属性 -> 高级系统设置 -> 环境变量 -> 系统变量 -> Path -> 新建 -> 粘贴 -> 确定 -> 确定 -> 确定
      • [图片上传失败...(image-cb58d3-1681184309508)]
      • 验证: Win键 + R -> 输入cmd -> 分别输入 gcc -v ,g++ -v , gdb -v 后回车,如果都有类似的显示则编译环境安装成功
      • [图片上传失败...(image-a649f6-1681184309508)]
  • 安装VSCode

    • 官方下载地址
    • vscode镜像源(推荐)
    • 下载后双击安装,选择安装位置 注意五个选项全选,不停下一步安装
    • [图片上传失败...(image-9c76c1-1681184309508)]
    • 安装Chinese 插件,安装完成先关闭 Vscode 然后重启Vscode
      • [图片上传失败...(image-dbc94f-1681184309508)]
      • 以后安装插件都是这几个步骤,1.点击拓展按钮,2,输入插件名,3.点击安装
  • 配置C/C++ 运行环境

    • 安装C/C++ 官方插件 (安装后再重新安装1.8.2版本),注意重新安装c/c++ 插件之后还有再重启一次Vscode

      • ps:最新版本不会自动生成launch.json 文件,给无数配置C/C++ 环境的人设置了阻碍,所以选择低版本(这一步很重要)
    • [图片上传失败...(image-d2ab41-1681184309508)]

    • 安装Code Runner 插件

[图片上传失败...(image-735cb0-1681184309508)]

[图片上传失败...(image-2566af-1681184309508)]

  • 配置暂停器

    • Code Runner的默认设置它的运行窗口是这个输出窗口,如果涉及到输入的程序,Code Runner就无能为力了,所以需要我们手动设置一下Code Runner的运行窗口.

    • 打开设置输入Code Runner Run in Terminal 将设置项打勾,

    • 重新改写代码,新增输入,再右键使用Code Runner 运行,发现已经再终端运行,可以输入,但是中文又出现了问题

      • [图片上传失败...(image-a583ef-1681184309508)]

      • 检查powershell 和 hello.c 的文件编码,发现不一致,通过vscode的编码状态按钮修改hello.c的编码,问题解决,

      • [图片上传失败...(image-d64c5-1681184309508)]

      • 如果常态化写GBK编码的程序,可以这样设置

      [图片上传失败...(image-7dbbdb-1681184309508)]

      • 还有一种解决办法,增加Code Runner 的编译参数

        • 打开设置,点击右上角第二个图标,打开settings.json 文件,在已有的设置项下添加如下代码,添加后别忘记保存,这一步是设定C/C++ 的编译和执行命令,保存设置后再运行(注意这里的UTF-8编码) ,即使是UTF-8 编码和PowerShell 不一致,输出中文也正常,这里的“-fexec-charset=GBK” 是告诉编译器,程序生成的可执行文件的编码格式强制转为GBK,如果你的编译器编译时报错,可能是该编译器不支持转为GBK编码.

        •     "code-runner.executorMap": {
                  "cpp": "cd $dir && g++ $fullFileName -static-libgcc -std=c++14 -fexec-charset=GBK -o \"$fileNameWithoutExt.exe\" && .\\$fileNameWithoutExt.exe",
                  "c": "cd $dir && gcc $fullFileName -static-libgcc -fexec-charset=GBK -o \"$fileNameWithoutExt.exe\" && .\\$fileNameWithoutExt.exe",  
              },
          
        • [图片上传失败...(image-c6730d-1681184309508)]

        • 运行拓展

          • 这样 Code Runner 运行程序是在内置的下方的终端,那要像别的ide那样,出现一个黑窗口怎么设置呢

          • 只需要在编译参数的 && 后面加一个 start 就可以了(注意前后的空格)

            • "code-runner.executorMap": {
                  "cpp": "cd $dir && g++ $fullFileName -static-libgcc -std=c++14 -fexec-charset=GBK -o \"$fileNameWithoutExt.exe\" && start .\\$fileNameWithoutExt.exe",
                  "c": "cd $dir && gcc $fullFileName -static-libgcc -fexec-charset=GBK -o \"$fileNameWithoutExt.exe\" && start .\\$fileNameWithoutExt.exe",  
              },
              
          • 但是这样又出现了问题,就是在程序运行之后你输入完成的瞬间就结束了,这是因为程序运行时间极快,运行完成之后没有其他操作就关闭了程序,我们的解决办法是在程序的主函数 的return 语句之前 写一个 getchar(); 语句以接收一个用户的输入从而暂停程序.

            但是这样的解决办法不优雅,我们看看Dev CPP 是怎么解决的

            Dev cpp 的内置了一个ConsolePauser.exe 的可执行程序,用它执行一个程序后会计算这个程序的运行时间,读取返回值并在最后暂停这个程序.这样我们就不用改变源码的内容了,这样就比较优雅.

          • 我这里提供一个类似 ConsolePauser.exe 的程序 Pauser.exe,将他复制到mingw下的bin目录中,还记得吗,我们将这个目录设置了环境变量,这样我们就可以直接使用Pauser 命令来暂停程序并获得额外的功能.

          • xkk1/ConsolePauser: Dev-C++ 中 ConsolePauser.exe 中文可替代版 (github.com)

          • "code-runner.executorMap": {
                "cpp": "cd $dir && g++ $fullFileName -static-libgcc -std=c++14 -fexec-charset=GBK -o \"$fileNameWithoutExt.exe\" && start Pauser .\\$fileNameWithoutExt.exe",
                "c": "cd $dir && gcc $fullFileName -static-libgcc -fexec-charset=GBK -o \"$fileNameWithoutExt.exe\" && start Pauser .\\$fileNameWithoutExt.exe",  
            },
            
          • [图片上传失败...(image-e613e0-1681184309508)]

  • 程序配置C/C++ 调试环境

    • 我们来新建一个文件夹向大家介绍一下Vscode 的调试功能

    • 打开vscode之后新建一个test.c 输入以下内容

    • [图片上传失败...(image-240bf6-1681184309508)]

    • #include
      void innerFun(int *arr){
          int i = 5, j = 6; // innerFun里面的i和j
          for(int indexInner = 5; indexInner < 8; indexInner ++){
              printf("this is outterFun now indexOut is %d \n",indexInner );
              arr[indexInner] = -3;
          }
      }
      
      void outterFun(int *arr){
          int i = 3, j = 4; //outterFun 里面的i和j
          for(int indexOut = 0; indexOut < 3; indexOut ++){
              printf("this is outterFun now indexOut is %d \n",indexOut );
              arr[indexOut] = -1;
          }
          innerFun(arr);
      }
      
      int main()
      {
          int arr[9] = {1,2,3,4,5,6,7,8,9};
          int i = 1,j = 2;  // main里面的i和j
          printf("now in Main 你好世界! \n");
          printf("now in Main \n");
          printf("now in Main \n");
          outterFun(arr);
      
          return 0;
      }
      
    • 我们在第23行打一个断点(鼠标移到行号的左边点一下,出现一个红点)

    • image-20221011210635179

    • 依次点击 运行->调试->C++(GDB/LLDB)->gcc.exe

    • [图片上传失败...(image-6c15db-1681184309508)]

    • [图片上传失败...(image-35c55a-1681184309508)]

    • 本地变量窗口显示了一些的变量的值

    • 在监视窗口可以直接输入表达式,来监视某些变量的值

    • 值得注意的是,想监视一个数组,则需要输入*arr@10 类似的表达式才能监视10个数据

    • [图片上传失败...(image-3ee1a8-1681184309508)]

  • 在文件左侧生成了一个.vscode文件夹,里面生成了 launch.json 和 task.json (新版本- C/C++插件的似乎不会生成其中一个文件)

  • 简单配置 C/C++ 多文件调试环境

    • 更改 launch.json 和 task.json
  • 插件分享和settings.json配置

  • 配置html - css - js 环境

    • 安装插件

配置 cl 编译器

  1. 下载 vs2022,如果已经下载,可以跳过这步,
  2. 使用vs2022创建一个项目,或者打开一个c++项目,确保可以使用vs2022正确运行项目
  3. 在项目中找到 vs所用的头文件路径和库文件路径
  4. 编辑环境变量INCLUDE 和 LIB 填充 vs所用的头文件路径和库文件路径
  5. 找到 vs的cl.exe 将其添加到Path 变量中
{
    "code-runner.executorMap": {
        "cpp" : "if (!(Test-Path -Path \"$workspaceRoot\\bin\")){mkdir \"$workspaceRoot\\bin\" | Out-Null} && cl /EHsc /nologo /std:c++20 /Fe$workspaceRoot\\bin\\$fileNameWithoutExt.exe /Fo\"$workspaceRoot\\bin\\$fileNameWithoutExt.obj\" $fullFileName && start Pauser $workspaceRoot\\bin\\$fileNameWithoutExt.exe ",
        "c" : "if (!(Test-Path -Path \"$workspaceRoot\\bin\")){mkdir \"$workspaceRoot\\bin\" | Out-Null} && cl /EHsc /nologo /std:c17 /Fe$workspaceRoot\\bin\\$fileNameWithoutExt.exe /Fo\"$workspaceRoot\\bin\\$fileNameWithoutExt.obj\" $fullFileName && start Pauser $workspaceRoot\\bin\\$fileNameWithoutExt.exe "
    }
}
{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: cl.exe 生成活动文件",
            "command": "cl.exe",
            "args": [
                "/Zi",
                "/EHsc",
                "/nologo",
                // "/Fe${fileDirname}\\${fileBasenameNoExtension}.exe",
                "/Fe${workspaceFolder}\\bin\\${fileBasenameNoExtension}.exe",
                "/Fo${workspaceFolder}\\bin\\${fileBasenameNoExtension}.obj",
                "/Fd${workspaceFolder}\\bin\\${fileBasenameNoExtension}.pdb",
                "/Fd${workspaceFolder}\\bin\\${fileBasenameNoExtension}.vc140.pdb",
                "${file}"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$msCompile"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "调试器生成的任务。"
        }
    ],
    "version": "2.0.0"
}

java 开发环境(jdk 和 jre)

  • 安装 jdk (jre)

    • JDK下载 - 编程宝库 (codebaoku.com)
  • 配置环境变量

  • 安装java插件包

  • 建立简单的项目

python 环境

  • 安装python3 解释器

      [官网](https://www.python.org/ftp/python/3.10.7/python-3.10.7-amd64.exe)
    
      [速度慢可以选择这个镜像](https://registry.npmmirror.com/-/binary/python/3.10.7/python-3.10.7-amd64.exe)
    
  • 安装python插件包

我的setting josn

{
  "files.autoSave": "afterDelay", //自动保存
  "files.autoSaveDelay": 100, //自动保存时间
  "editor.renderWhitespace": "all", // 显示空白符
  "editor.mouseWheelZoom": true, // 按住ctrl键使用鼠标滚轮改变字体大小  // 
  "editor.quickSuggestions": { //设置快捷补全的开启
    "other": "on",
    "comments": "on",
    "strings": "off"
  },
  "emmet.includeLanguages": { //在默认不受支持的语言中启用emts的缩写
    "javascript": "javascriptreact",
    "vue": "html",
    // "javascript": "html",
    "html":"javascript"
  },
  "files.autoGuessEncoding": true, //自动猜测字符集
  "editor.guides.bracketPairs": true,//开启括号匹配线
  "editor.guides.indentation": true, 
  "workbench.iconTheme": "vscode-icons",   //使用vscode-icons图标(需要安装插件)
  "terminal.integrated.fontFamily": "JetBrainsMono Nerd Font", //设置终端字体(需要安装字体)
  //SSSaSaSaSa   验证等宽字体
  //流俩个日期
  "editor.fontFamily": "'Ubuntu Mono Nerd Font', '等距更纱黑体 SC'", // 设置字体(需要安装字体)
  "terminal.integrated.enableMultiLinePasteWarning": false, // 禁止多行粘贴警告
  "editor.suggest.preview": true, //设置快捷建议
  "editor.tokenColorCustomizations": { // 设置部分字体倾斜
    "textMateRules": [  
      {
        "scope": [  //设置范围
          // "comment",
          // "function",
          // "entity.name.function",
          // "entity.name.method",
          "keyword.control"
        ], //设置风格
        "settings": {
          // "fontStyle": "italic",
          "fontStyle": "italic"
        }
      },{
        "scope":[
          // "entity.name.function",
          // "entity.name.class"
        ],
        "settings": {
          "fontStyle": "bold"
        }
      }
    ]
  },
  "editor.formatOnPaste": true, // 设置粘贴的代码格式化
  "java.debug.settings.showStaticVariables": true, //设置调试在本地变量中显示静态变量
  "java.silentNotification": true, // 控制是否可以使用通知来报告进度。
  "errorLens.gutterIconsEnabled": true, //使错误信息的字体为斜体(个人喜好)
  "workbench.colorCustomizations": { //自定义颜色
    // "editor.hoverHighlightBackground": "#ff0000",
    "editor.background": "#272a30",
    "sideBar.background": "#292b2e",
    "activityBar.activeBackground": "#245a04",
    "activityBar.background": "#1f2122",
    "statusBar.background": "#245a04",
    "menubar.selectionBackground": "#245a04",
    "foreground": "#bff1d8",
    "menu.selectionBackground": "#245a04",
    "titleBar.activeBackground": "#2b2d31",
    "menu.background": "#373a31e1",
    "sideBarSectionHeader.background": "#535353",
    "editor.lineHighlightBackground": "#0e4a074e",
    "terminal.tab.activeBorder": "#148716ae",
    "panelTitle.activeBorder": "#148716ae",
    // "peekViewTitleLabel.foreground": "#ff0000",
    "tab.activeBackground": "#14871660",
    "tab.activeBorder": "#ffffff",
    "quickInputList.focusBackground": "#148716ae",
    "panel.border": "#d7bcbc91",
    // "panelSection.border": "#ff0000",
    "editorLineNumber.activeForeground": "#148716",
    "editorLineNumber.foreground": "#f1e6e63e",
    "panel.background": "#2c2e2dc3",
    // "editorWidget.border": "#b9bece",
    "editor.lineHighlightBorder": "#ffffff86",  //光标所在行四周边框的颜色
    "sideBar.border": "#d7bcbc91",  //侧边栏边框
    "editorGroup.border": "#d7bcbc91",
    "terminal.background": "#25292c"
  },
  
  "cSpell.diagnosticLevel": "Hint",
  "cSpell.customDictionaries": {
    "custom-dictionary-user": {
      "name": "custom-dictionary-user",
      "path": "~/.cspell/custom-dictionary-user.txt",
      "addWords": true,
      "scope": "user"
    }
  },
     // 下面的太多了懒得注释了
    "diffEditor.codeLens": true,

    "files.defaultLanguage": "cpp", // ctrl+N新建文件后默认的语言
    "editor.formatOnType": true, // 输入时就进行格式化,默认触发字符较少,分号可以触发
    "editor.snippetSuggestions": "top", // snippets代码优先显示补全
    "code-runner.saveFileBeforeRun": true, // run code前保存
    "code-runner.preserveFocus": false, // 若为false,run code后光标会聚焦到终端上。如果需要频繁输入数据可设为false
    "code-runner.clearPreviousOutput": false, // 每次run code前清空属于code runner的终端消息
    "C_Cpp.clang_format_sortIncludes": false, // 格式化时调整include的顺序(按字母排序),这个别开,不信以后遇到问题你就会来关了
    "C_Cpp.intelliSenseEngine": "Default", // 可以为Default或Tag Parser,后者较老,功能较简单。具体差别参考cpptools扩展文档
    "C_Cpp.errorSquiggles": "Disabled", // 因为有clang的lint,所以关掉
    "C_Cpp.autocomplete": "Disabled", // 因为有clang的补全,所以关掉
    "clang.completion.enable": true,
    "C_Cpp.dimInactiveRegions": false,
    "clangd.detectExtensionConflicts": false,
    "terminal.integrated.defaultProfile.windows": "PowerShell", //设置默认的shell
    "[html]": {
      "editor.defaultFormatter": "vscode.html-language-features"
    },
    "editor.stickyScroll.enabled": true,
    "editor.tabCompletion": "on",
    "editor.guides.bracketPairsHorizontal": true,
    "code-runner.runInTerminal": true, // 设置成false会在“输出”中输出,无法输入
    "code-runner.executorMap": {
      "cpp": "cd $dir && g++ $fullFileName -static-libgcc -std=c++14 -fexec-charset=GBK -o \"$fileNameWithoutExt.exe\" && start Pauser .\\$fileNameWithoutExt.exe",
      "c": "cd $dir && gcc $fullFileName -static-libgcc -fexec-charset=GBK -o \"$fileNameWithoutExt.exe\" && start Pauser .\\$fileNameWithoutExt.exe",  
      // "python": " cls && cd /d $dir && python3 -u $fullFileName && pause",
      "python": "cd $dir && D:/Python/Python310/python.exe  $fullFileName"
    },
    "[c]": {
      "editor.defaultFormatter": "ms-vscode.cpptools"
    },
    "terminal.integrated.fontSize": 12,
    "window.zoomLevel": -1,
    "varTranslation.translationEngine": "tencent",
    "varTranslation.tencentSecret": "自己,配置",
    "liveServer.settings.donotShowInfoMsg": true,
    "editor.renderLineHighlightOnlyWhenFocus": true,
}

你可能感兴趣的:(vsCode 配置c/c++)