windows+cpp(三): VS code + MinGW, windows上编写调试cpp_* 正在执行任务: c/c++: g++ 生成活动文件 正在启动生成... /usr/bin/g++-程序员宅基地

技术标签: c++  vscode  编译优化与开发  windows  

首先,需要参考windows+cpp(二):安装cpp开发环境 MinGW 或 msys2 或 Cygwin 安装 MinGW 或 msys2 (推荐后者)

VS code

  1. 下载安装VS Code
  2. VS code中安装 Extension:c/c++ (ms-vscode.cpptools), (Ctrl+Shift+X),安装后重启vs code使之生效。
    在这里插入图片描述
  3. 下面逐步展示使用vs code debug cpp,或者参考官网进行配置。后面总共会产生一下几个文件:
  • helloword.cpp (示例代码)
  • tasks.json (编译配置)
  • launch.json (debugger 配置)
  • c_cpp_properties.json (compiler path and IntelliSense settings)
  1. 新建一个helloword目录,并在vscode中选择Open Folder打开该目录
  2. 配置tasks.json编译项目
    选择Terminal > Configure Default Build Task > C/C++: g++ build active file,产生tasks.json,类似下面:
    {
          
      "tasks": [
        {
          
          "type": "cppbuild",
          "label": "C/C++: g++.exe build active file",
          "command": "C:/msys64/mingw64/bin/g++.exe",
          "args": ["-g", "${file}", "-o", "${fileDirname}\\${fileBasenameNoExtension}.exe"],
          "options": {
          
            "cwd": "${fileDirname}"
          },
          "problemMatcher": ["$gcc"],
          "group": {
          
            "kind": "build",
            "isDefault": true
          },
          "detail": "compiler: C:/msys64/mingw64/bin/g++.exe"
        }
      ],
      "version": "2.0.0"
    }
    
    其实整个配置中只有command和args最重要,这两者结合就是run 这个配置时候等价跑的命令。
  • args: 将传给g++的命令行参数.

  • ${file}: 代码文件, 将编译并在(${fileDirname}) 下生成它对应的可执行文件. 更多细节可参考 variables reference.

    点击helloword.cpp,在Terminal工具栏中选择Run Build Task,或者Ctrl+Shift+B 编译该项目。点击下面TERMINAL右边的’+'新建一个TERMINAL,输入.\helloword.exe运行程序

    > Executing task: C/C++: g++.exe 生成活动文件 <
    
    正在启动生成...
    D:\software\mingw-w64\mingw64\bin\g++.exe -fdiagnostics-color=always -g D:\dev\vscode\projects\helloworld\helloword.cpp -o D:\dev\vscode\projects\helloworld\helloword.exe
    生成已成功完成。
    
    Terminal will be reused by tasks, press any key to close it.
    
    PS D:\dev\vscode\projects\helloworld> .\helloword.exe
    Hello C++ World from VS Code and the C++ extension! 
    
  1. launch.json debug
    工具栏选择Run->Add Configuration->C++ (GDB/LLDB)->g++.exe build and debug active file.

    {
          
      "version": "0.2.0",
      "configurations": [
        {
          
          "name": "g++.exe - Build and debug active file",
          "type": "cppdbg",
          "request": "launch",
          "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
          "args": [],
          "stopAtEntry": false,
          "cwd": "${fileDirname}",
          "environment": [],
          "externalConsole": false,
          "MIMode": "gdb",
          "miDebuggerPath": "C:\\msys64\\mingw64\\bin\\gdb.exe",
          "setupCommands": [
            {
          
              "description": "Enable pretty-printing for gdb",
              "text": "-enable-pretty-printing",
              "ignoreFailures": true
            }
          ],
          "preLaunchTask": "C/C++: g++.exe build active file"
        }
      ]
    }
    

    Change the stopAtEntry value to true to cause the debugger to stop on the main method when you start debugging.

    The preLaunchTask setting is used to specify task to be executed before launch. Make sure it is consistent with the tasks.json file label setting.

    在helloword.cpp中设置断点,然后选择 Run > Start Debugging或者F5就开始debug了。

  2. c_cpp_properties.json, intelliSense
    Ctrl+Shift+P 输入C/C++: Edit Configurations (UI)
    设置编译器路径 compilerPath 和对应的intelliSenseMode。生成c_cpp_properties.json
    intelliSense是vs code里的一个插件,功能包括:自动代码补全;实时错误检查;代码改进建议。

    {
          
     "configurations": [
       {
          
         "name": "Linux",
         "includePath": ["${workspaceFolder}/**"],
         "defines": [],
         "compilerPath": "/usr/bin/gcc",
         "cStandard": "c11",
         "cppStandard": "c++17",
         "intelliSenseMode": "clang-x64"
       }
     ],
     "version": 4
    }
    
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yinglang19941010/article/details/120827308

智能推荐

C语言练习题:快递费用计算!!_不足一公斤按一公斤算c语言-程序员宅基地

文章浏览阅读1.2w次,点赞21次,收藏67次。目录_不足一公斤按一公斤算c语言

世界最大花朵时隔20个月再度开花-程序员宅基地

文章浏览阅读1.3k次。2012年11月19日,瑞士巴塞尔,世界最大的花朵巨型魔芋时隔20个月再度开放,此花高2.27米,其块茎重量超过30磅。因开花时会散发出一种类似腐尸的刺鼻气味,因此人们又把它叫做“尸体花”。魔芋花的腐尸气味一般会持续三天左右,人在一千米以外的地方就能闻到,而这种气味会吸引以腐肉为食的甲虫及肉蝇来替它授粉。

如何使用 Navicat 连接数据库?_navicat连接神通数据库-程序员宅基地

文章浏览阅读877次,点赞7次,收藏6次。在Navicat的起始页面,点击”连接”按钮或在顶部菜单栏选择“连接”,然后选择你要连接的数据库类型(例如MySQL、PostgreSQL、SQL Server等)。成功连接后,你将能够查看数据库中的表格和其他对象,并可以执行相应的数据库管理操作。通过以上步骤,你已经成功连接了数据库,可以使用Navicat进行数据库管理和操作。在Navicat主界面选择你刚刚创建的连接,双击该连接或点击“连接”按钮。数据库:连接的数据库名称,如果需要连接特定数据库,请填写该字段。连接名:可任意命名,以方便识别这个连接。_navicat连接神通数据库

mybatis语法入参为Integer和Date类型的问题_mybatis入参为date-程序员宅基地

文章浏览阅读2.6k次。在mybatis中,编写sql语句带判断的情况下&lt;if&gt;标签。许多时候入参都是String的,所以就有很标准的写法。&lt;if test ="a != null and a !=' ' "&gt;执行语句&lt;/if&gt;当传入值的类型不为String类型时,这样写就要有考虑了。上图:java中controller类接收前台传值,有Integer类型传入,可以查..._mybatis入参为date

详解Java线程中的wait()、notify()、notifyAll()方法_wait() notify() notifyall()-程序员宅基地

文章浏览阅读2.1k次,点赞10次,收藏19次。线程中的wait()、notify()、notifyAll()详解在讲解wait()、notify()、notifyAll()方法之前,先了解一下什么是等待队列。所有的实例都拥有一个等待队列,它是在实例的wait方法执行后停止操作的线程的队列。打个比方就是为每一个实例准备的线程休息室。在执行wait方法后,线程便会暂停操作,进入等待队列这个休息室,除非发生下列四种中的某一种情况,否则线程会一直在等待队列中休眠。(1)有其他线程的notify方法来唤醒线程(2)有其他线程的notifyAll方法来唤醒_wait() notify() notifyall()

Jquery常用站点-程序员宅基地

文章浏览阅读55次。常用方法查询:http://visualjquery.com/_jquery 站点图

随便推点

Python生成器、迭代器_python 生成器迭代器-程序员宅基地

文章浏览阅读1.9k次。可以直接作用于for循环的数据类型有以下几种:一类是集合数据类型,如list,tuple,dict,set,str等;另一类是generator ,包括生成器和带yeild的generator function,这些可以 直接作用于for循环的对象统称为可迭代对象:Iterable,可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator,list,dict,str虽然是Iterable,却不是Iterator。生成器就是特殊的迭代器。_python 生成器迭代器

Java面试15方面(一)_java面试题几个方向-程序员宅基地

文章浏览阅读77次。一、Spring中的IOC、DI、AOP、三级缓存什么是ioc:ioc是控制反转,就是把对象交给spring容器统一管理,不需要程序员手动去new,在需要的时候直接从容器中获取即可。ioc的实现方式//1.IOC通过注解实现的几种方式@Component@Controller@Service@Repostorypublic class A{ //以上四种注解是打在类上实现ioc的}@Configurationpublic class A{ @Bean _java面试题几个方向

MysqlDataTruncation: Data truncation: Incorrect datetime value-程序员宅基地

文章浏览阅读4.5k次。type Exception reportmessage could not insert: [cn.itcast.shop.order.vo.Order]; SQL [insert into orders (total, ordertime, state, name, phone, addr, uid) values (?, ?, ?, ?, ?, ?, ?)]; nested exce_mysqldatatruncation: data truncation: incorrect datetime value

icode编程图形化|一级训练场|基本操作_icode 图形化高级数组-程序员宅基地

文章浏览阅读1.8k次,点赞2次,收藏2次。icode国际青少年编程竞赛学习与竞赛分享_icode 图形化高级数组

在CentOS 7上安装Filebeat大数据_centos7安装filebeat-程序员宅基地

文章浏览阅读281次。确保选择正确的索引模式,并检查是否有来自Filebeat的日志数据。Filebeat是一个轻量级的开源日志数据收集器,用于将日志和文件数据从服务器发送到中央日志存储或分析系统。至此,您已成功在CentOS 7上安装和配置Filebeat,并将日志数据发送到Elasticsearch进行大数据分析。完成配置后,我们可以启动Filebeat并将其设置为在系统启动时自动启动。接下来,我们需要配置Filebeat以指定要收集和发送的日志文件。如果一切顺利,您将看到Filebeat开始读取和发送指定的日志文件。_centos7安装filebeat

matlab如何画波特图,matlab画波特图-程序员宅基地

文章浏览阅读1.2k次。Matlab 中 Bode 图的绘制技巧 学术收藏 2010-06-04 21:21:48 阅读 54 评论 0 字号:大中小 订阅 我们经常会遇到使用 Matlab 画伯德图的情况,可能我们我们都......MATLAB绘制Bode图与Nyqu... 暂无评价 3页 1下载券 实验五 MATLAB绘制Bode图... 13页 免费 新版本matlab中绘制bode... 2页 免费 ..._matlab根据扫频数据画波特图

推荐文章

热门文章

相关标签