• win10下visual studio code安装及mingw C/C++编译器配置,launch.json和task.json文件的配置


    2021.2.3更新

    在work_space的.vscode文件夹里添加以下4个文件就完了,别用看下面哔哔了

    1. c_cpp_properties.json

     1 {
     2     //C_Cpp_Properties.json是用于配置编译器环境的,包括启动器代号、位数(这些是自定义的)、编译选项、启动设置、编译模式等。
     3     //includePath指向C/C++标准库、用户头文件所在位置。
     4     //不需要CMake也可以直接编写C/C++
     5     "configurations": [
     6         {
     7             "name": "Linux",
     8             "includePath": [
     9                 "${workspaceFolder}/**"
    10             ],
    11             "defines": [],
    12             "compilerPath": "/usr/bin/clang",
    13             "cStandard": "c11",
    14             "cppStandard": "c++17",
    15             "intelliSenseMode": "clang-x64"
    16         }
    17     ],
    18     "version": 4
    19 }

    2. launch.json

     1 {
     2     // Use IntelliSense to learn about possible attributes.
     3     // Hover to view descriptions of existing attributes.
     4     // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
     5     "version": "0.2.0",
     6     "configurations": [
     7         {
     8             "name": "(gdb) Launch", // 配置名称,将会在启动配置的下拉菜单中显示
     9             "type": "cppdbg", // 配置类型,这里只能为cppdbg
    10             "request": "launch", // 请求配置类型,可以为launch(启动)或attach(附加)
    11             "program": "${fileDirname}/${fileBasenameNoExtension}.out", // 将要进行调试的程序的路径
    12             "args": [], // 程序调试时传递给程序的命令行参数,一般设为空即可
    13             "stopAtEntry": false, // 设为true时程序将暂停在程序入口处,我一般设置为true
    14             "cwd": "${workspaceFolder}", // 调试程序时的工作目录
    15             "environment": [], 
    16             "externalConsole": false, // 调试时是否显示控制台窗口,一般设置为true显示控制台,
    17                                       // 但是最新版cpptools有BUG,具体请看文末的注意
    18             "internalConsoleOptions": "neverOpen", // 如果不设为neverOpen,调试时会跳到“调试控制台”选项卡,你应该不需要对gdb手动输命令吧?
    19             "MIMode": "gdb", // 指定连接的调试器,可以为gdb或lldb。但目前lldb在windows下没有预编译好的版本。
    20             "miDebuggerPath": "gdb", // 调试器路径,Windows下后缀不能省略,Linux下则去掉
    21             "setupCommands": [ // 用处未知,模板如此
    22                 {
    23                     "description": "Enable pretty-printing for gdb",
    24                     "text": "-enable-pretty-printing",
    25                     "ignoreFailures": false
    26                 }
    27             ],
    28             "preLaunchTask": "Compile" // 调试会话开始前执行的任务,一般为编译程序。与tasks.json的label相对应
    29         }
    30     ]
    31 }

    3. setting.json

     1 {
     2     "files.associations": {
     3         "iostream": "cpp",
     4         "array": "cpp",
     5         "deque": "cpp",
     6         "forward_list": "cpp",
     7         "string": "cpp",
     8         "unordered_map": "cpp",
     9         "vector": "cpp"
    10     }
    11 }

    4. tasks.json

     1 {
     2     // See https://go.microsoft.com/fwlink/?LinkId=733558
     3     // for the documentation about the tasks.json format
     4     // tasks.json这个文件是定义调试开始前要执行的任务,即(或者绝大多数是)编译程序, 定义了用于编译程序的编译器,所输出的文件格式,使用的语言标准等
     5     "version": "2.0.0",
     6     "tasks": [
     7         {
     8             "label": "Compile", // 任务名称,与launch.json的preLaunchTask相对应
     9             "command": "g++", // 要使用的编译器, C就写gcc
    10             "args": [
    11                 "${file}",
    12                 "-o", // 指定输出文件名,不加该参数则默认输出a.exe,Linux下默认a.out
    13                 "${fileDirname}/${fileBasenameNoExtension}.out",
    14                 "-g", // 生成和调试有关的信息
    15                 //"-Wall", // 开启额外警告
    16                 "-static-libgcc", // 静态链接
    17                 "-std=c11" // C语言最新标准为c11,或根据自己的需要进行修改比如C++17
    18             ], // 编译命令参数
    19             "type": "shell", // 可以为shell或process,前者相当于先打开shell再输入命令,后者是直接运行命令
    20             "group": {
    21                 "kind": "build",
    22                 "isDefault": true // 设为false可做到一个tasks.json配置多个编译指令,需要自己修改本文件,我这里不多提
    23             },
    24             "presentation": {
    25                 "echo": true, 
    26                 "reveal": "always", // 在“终端”中显示编译信息的策略,可以为always,silent,never。具体参见VSC的文档
    27                 "focus": true, // 设为true后可以使执行task时焦点聚集在终端
    28                 "panel": "shared" // 不同的文件的编译信息共享一个终端面板
    29             },
    30             //"problemMatcher": "$gcc"
    31         }
    32     ]
    33 }
     

    -------------------------------------------------------------------------------------------------------------------------------------------------更新分割线--------------------------------------------------------------------------------------------------------------------------------------------------

    1. 下载并安装vs code

            这个比较简单,略过。

    2. 下载安装C/C++和中文插件

            首先下载安装C/C++,就是下面这货

             然后下载安装中文插件:

     按提示重启vs code,之后按shift + ctrl + P打开命令行,输入 Configure Display Language进行语言设置,选择ZH-CN作为语言(我这个版本是直接显示出已安装的语言列表,直接进行选择就行了,但看其他人的版本有的要打开locale.json并编辑其中locale一项如下:“locale”: "zh-CN")

    3. 下载并安装C/C++编译器

            之前一直不了解gcc,g++,mingw这些东西,一直把前两个混淆,现在网上找了些资料如下:

    https://www.cnblogs.com/oxspirt/p/6847438.html

    https://blog.csdn.net/wjheha/article/details/77648729

    这里我安装的是mingw(因为这个以前安装过,这里安装过程略),安装完之后在环境变量path中添加“安装目录MinGWin”,以便vs code的插件能找到编译器所在位置,接下来就是看看怎么样能运行一个hello world了。首先创建一个项目文件夹,里面放cpp文件(注意路径最好不要带中文),你的hello_world.cpp就放在里面,打开cpp文件,点击左侧debug按钮,在按F5出现如下下拉列表,我这里选择C++(GDB/LLDB),

    之后再出现这个下拉列表,我这里还是选择第一项,

    这时系统会根据安装好的mingw自动生成配置好的launch.json文件,保存在工作文件夹的.vscode文件夹下,如下图

     然后关键的一步来了,在externalConsole一项,将false改为true!!

     然后切换回cpp文件,按F5,会弹出下面的提示,选择配置任务

    之后又出现如下列表

     

     这里需要选择和之前选择一样的选项,之前选择的是g++.exe build and debug active file,所以这里我仍然选择g++那一项,之后系统就会在.vscode文件夹下自动生成task.json文件如下,

    这个文件无需任何更改。

    再切换回cpp文件,再按下F5,发现已经可以调试了,生成了相应的exe文件

    PS:路径和文件名不能带中文,否则各种出错

    参考:

    https://blog.csdn.net/a845717607/article/details/94756604

    https://blog.csdn.net/bat67/article/details/81268581

    https://www.cnblogs.com/ghjnwk/p/9806677.html

    ————————————————————————————更新分割线————————————————————————————————

    经过这两天的摸索碰壁,终于搞清楚launch.json和task.json这两个文件如何配合工作了。。。。上面的说法是从网上找来的,并不正确。

    在进行编译前,需要先配置好launch.json 和task.json两个文件,对launch.json的各关键项解释如下:

    其中name一栏随便填写,在调试的时候会在界面的左下角以“name(work dir)”显示出来,如下图

    而"externalConsole"一项则决定是否弹出外部黑窗的形式显示,如果选false的话就不会弹出黑窗,而是显示在界面下方的“调试控制台”一项中。

    关键是prelaunchTask这一项,这里的内容要与task.json中的task的label一致!!如下图

    在task.json文件中,每增加一个task,就会在task[]列表中多一个项,每个项都有如下字段:

     其中command字段为编译器路径,注意这里如果选择g++.exe(例如上图),则无论是c文件还是cpp文件都可以编译生成可执行文件,如果选择的是gcc.exe则只能编译c文件,编译c++文件会出错!!

    下面的cwd为编译器所在的位置,其他的保持默认就行。

  • 相关阅读:
    fastDFS同步问题讨论
    Android开发(26)--补间动画(Tween)的实现
    android布局
    Linux特殊权限:SUID、SGID、SBIT
    如何使用ssh-keygen生成key
    Linux中环境变量到底写在哪个文件中?解析login shell 和 no-login shell
    使用ssh无密码登录
    github中的ssh配置
    PHP中的一个很好用的文件上传类
    [置顶] js模板方法的思路及实现
  • 原文地址:https://www.cnblogs.com/tan-wm/p/11570056.html
Copyright © 2020-2023  润新知