相关名词就不解释了,这里主要讲讲在vscode里怎么配,这里假设大家相关工具已经装好。

题外话:里面的大多数坑都是windows平台和linux平台的差异造成的,如果在linux平台配置,应该会顺利很多。

1、在.vscode目录下,新建以下几个配置文件,当然也可以通过vscode命令自动生成,如果你已有这些文件直接修改即可。

c_cpp_properties.json(代码提示):

{
"configurations": [
{
"name": "Win32",
"windowsSdkVersion": "10.0.18362.0",
"compilerPath": "${env:MSYS2}/mingw64/bin/gcc",
"includePath": ["${env:MSYS2}/mingw64/include"],
"defines": ["_DEBUG", "UNICODE", "_UNICODE"],
"intelliSenseMode": "gcc-x64"
}
],
"version": 4
}

tasks.json(编译):

{
"tasks": [
{
"type": "shell",
// 标示名
"label": "build",
// 要执行的命令,这里用了一个脚本来构建
"command": "./build.sh",
// 命令参数
"args": ["${fileBasename}", "${fileBasenameNoExtension}.exe"],
"group": {
"kind": "build",
"isDefault": true
},
"problemMatcher": "$gcc"
}
],
"version": "2.0.0"
}

launch.json(调试):

{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "gdb",
"type": "cppdbg",
"request": "launch",
// 要调试的程序
"program": "${workspaceFolder}/build/${fileBasenameNoExtension}.exe",
// 程序运行参数
"args": ["./video/sample.mp4"],
// 是否在入口自动断点
"stopAtEntry": false,
// 工作目录
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"miDebuggerPath": "gdb.exe",
// 先编译,再调试,对应tasks.json中的标示
"preLaunchTask": "build",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}

这里需要特别关注的一点是externalConsole要设置成true,只能另开一个控制台调试,因为在原来的bash环境下无法执行windows的调试连接器。

settings.json(vscode终端配置):

{
"editor.formatOnSave": true,
// 要使用cmd终端,其他终端会有兼容问题
"terminal.integrated.shell.windows": "${env:MSYS2}/usr/bin/bash.exe",
"terminal.integrated.shellArgs.windows": ["--login"],
"terminal.integrated.env.windows": {
"MSYSTEM": "MINGW64",
"CONTITLE": "MinGW x64",
"C_INCLUDE_PATH": "/mingw64/include",
"CPLUS_INCLUDE_PATH": "/mingw64/include"
}
}

这个配置需要重点说下:

首先终端必须设置为bash.exe,这个被硬编码到了vscode的代码中,他会根据这个识别相关的参数配置。

其次,参数中需要加入"--login",这个配置了才能正常使用linux下的命令,比如ls之类的。

然后,环境参数需要手动设置一下,MSYSTEM和CONTITLE是给msys2使用的,让他识别出要使用的平台是mingw64(后面那个估计只是title,做展示用的而已),这两个参数是从他的bat脚本里面抠出来的。

C_INCLUDE_PATH和CPLUS_INCLUDE_PATH是设置gcc编译使用的头文件寻找路径,msys2好像没有自动配置这个,我们这里手动加下,这样mingw64目录下的include就可以被gcc识别了。

2、在根目录下创建构建脚本

build.sh(构建脚本,可根据需要自行更改):

#!/bin/sh

# 创建build目录
if [ ! -d "build" ]; then
mkdir build
fi gcc $ -g -o build/$ -lavformat -lavcodec -lavutil -lSDl2main -lSDL2

[原创]在Windows平台使用msys2、mingw64和vscode编写和调试C/C++代码的更多相关文章

  1. [原创]在Windows平台使用msvc(cl.exe) + vscode编写和调试C/C++代码

    1.在.vscode目录下,新建以下几个配置文件,当然也可以通过vscode命令自动生成,如果你已有这些文件直接修改即可. c_cpp_properties.json(代码提示): { "c ...

  2. 【原创】Windows平台搭建Kafka源代码开发环境(Eclipse版本)

    最近在研究Kafka源代码,需要自己搭建一个开发环境.官网上给出的提示略显简单,照着做了一遍也碰到了一些问题.特此记录下来. 开发环境: Oracle Java 1.7_u71 + Eclipse 4 ...

  3. 亲试,Windows平台上使用Qt5.2.1编写Android

    首先把工具都下载好: 1. Qt for Android: http://qt-project.org/downloads 2. Android NDK http://developer.androi ...

  4. Windows平台Unity3d播放多路RTMP或RTSP流

    好多开发者在做AR.VR或者教育类产品时,苦于如何在windows平台构建一个稳定且低延迟的RTSP或者RTMP播放器,如果基于Unity3d完全重新开发一个播放器,代价大.而且周期长,不适合快速出产 ...

  5. Windows平台下使用vs code搭建python3环境(1)

    前言:最近几周在使用python开发的过程中,碰到了好多坑,由于以前使用visual studio 2015习惯了,导致刚开始搭建python开发环境以及管理各种包的时候有点不习惯,再加上python ...

  6. Windows平台Oracle使用USE_SHARED_SOCKET角色

    前两天在一个朋友QQ集团提出了一个问题.背景例如,下面的: 继续问后,有例如以下回复: 1.对方server连接无问题. 2.从client能够telnetserver的1521port. 3.tns ...

  7. Windows平台下解决Oracle12c使用PDB数据库创建SDE的问题 分类: oracle sde 2015-06-12 11:03 88人阅读 评论(0) 收藏

    Windows平台下解决Oracle12c使用PDB数据库创建SDE的问题 Oracle 12C中引入了CDB与PDB的新特性,在ORACLE 12C数据库引入的多租用户环境(Multitenant ...

  8. Domino系统从UNIX平台到windows平台的迁移及备份

    单位机房的一台服务机器到折旧期了,换成了新购IBM机器X3950,而且都预装了windows 2003 server 标准版,所以只有把以前在Unix平台下跑的OA系统迁移到新的windows 200 ...

  9. Cocos2d-x在Windows平台环境的搭建

    |   版权声明:本文为博主原创文章,未经博主允许不得转载. windows平台下配置Cocos2d-X引擎所需的压缩文件和可执行文件,如下: 下载链接: adt:    http://tools.a ...

随机推荐

  1. winform 更新文件上传(一)

    using Common; using DevExpress.XtraEditors; using FileModel.UpLoad; using System; using System.Colle ...

  2. PCM-FTL

    1. 运行时第一行需要是write 错误位置 trace_stat->sectors += length;

  3. Linux中 cmake-3.x 编译安装以及man page添加

    首先回顾一下 cmake-2.x 的编译安装. ================ cmake-2.x编译安装说明 ================编译安装的命令: ./bootstrap --pref ...

  4. 导入/导出 数据库/数据库表(wordpress做例子)

    导入数据库: 1. 数据库层面: 没有wordpress的情况下,建立wordpress数据库 create database wordpress; 进入wordpress数据库 use wordpr ...

  5. jupyter notebook 常用快捷操作

    Shift-Enter 执行当前cell,并自动跳到下一个cell Ctrl-Enter 执行当前cell,执行后不自动调转到下一个cell DD 删除当前的cell L 为当前的cell加入line ...

  6. Java集合框架——Set接口

    第三阶段 JAVA常见对象的学习 集合框架--Set接口 List集合的特点是有序的,可重复的,是不是存在这一种无序,且能保证元素唯一的集合呢?(HashSet )这就涉及到我们今天所要讲的Set集合 ...

  7. jdk1.8 -- 自定义FunctionInterface

    一.自定义函数的理解 对于java提供的一些函数,用lambda表达式是可以解决一些问题的,但是在对于一些比较复杂的数据类型在处理时,可能会有些力不从心了,但是 我们可以通过自定义的一些函数,通过使用 ...

  8. kafka server.properties 配置文件详解(二)

    虽然在前面一部分我们启动了kafka集群,并通过控制台的方式实现了producer和consumer,但是我们还是了解一下kafka单个节点是的配置参数属性, 也只有了解了这些参数的配置,才能将kaf ...

  9. 和HTTP相关的web服务器内容

    一台web服务器可以搭建多个独立域名的网站,也可以作为通信路径上的中转服务器提升传输效率. 1. 用单台虚拟主机实现多个域名 多个域名解析后对应的ip地址相同,需要在Host首部中包含完整的主机名或者 ...

  10. 二维码生成工具类java版

    注意:这里我不提供所需jar包的路径,我会把所有引用的jar包显示出来,大家自行Google package com.net.util; import java.awt.BasicStroke; im ...