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

c_cpp_properties.json(代码提示):

 {
"configurations": [
{
"name": "Win32",
// 设置windows sdk版本
"windowsSdkVersion": "10.0.18362.0",
// 设置msvc编译器路径
"compilerPath": "D:/ProgramData/Microsoft/VisualStudio/IDE/VC/Tools/MSVC/14.23.28105/bin/Hostx64/x64/cl.exe",
// 智能提示会从这里搜索头文件
"includePath": [
"${workspaceFolder}/third_party/SDL2-2.0.10/include",
"${workspaceFolder}/third_party/ffmpeg-4.2-win64/include"
],
"defines": ["_DEBUG", "UNICODE", "_UNICODE"],
// 使用msvc类型的智能提示
"intelliSenseMode": "msvc-x64"
}
],
"version": 4
}

tasks.json(编译):

 {
"tasks": [
{
"type": "shell",
// 标示名
"label": "msvc build",
// 要执行的命令,这里用了一个bat脚本来构建
"command": "build.bat",
// 命令参数
"args": ["${fileBasename}", "build", "${fileBasenameNoExtension}"],
"group": {
"kind": "build",
"isDefault": true
},
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "shared",
"showReuseMessage": true,
"clear": false
},
"problemMatcher": "$msCompile"
}
],
"version": "2.0.0"
}

launch.json(调试):

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

settings.json(vscode终端配置):

 {
// 要使用cmd终端,其他终端会有兼容问题
"terminal.integrated.shell.windows": "C:/WINDOWS/System32/cmd.exe"
}

2、在根目录下创建构建脚本,构建脚本主要是配置msvc环境,配置cl.exe的构建参数(头文件、链接库等)

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

 @echo off

 REM %1: target file with ext
REM %2: build path
REM %3: output file without ext REM https://docs.microsoft.com/en-us/cpp/build/building-on-the-command-line?view=vs-2019
call "D:\ProgramData\Microsoft\VisualStudio\IDE\VC\Auxiliary\Build\vcvarsall.bat" x64 10.0.18362.0 REM create build directory
if not exist %2 md %2 set compilerflags=/Od /Zi /EHsc /Fd%2\ /Fo%2\ set linkerflags=/OUT:%2\%3.exe REM includes
set includes=
for %%i in (^
third_party/SDL2-2.0.10/include,^
third_party/ffmpeg-4.2-win64/include) do call :concat %%i REM libs
set libs=^
third_party/SDL2-2.0.10/lib/x64/SDL2main.lib^
third_party/SDL2-2.0.10/lib/x64/SDL2.lib^
third_party\ffmpeg-4.2-win64\lib\avformat.lib^
third_party\ffmpeg-4.2-win64\lib\avcodec.lib^
third_party\ffmpeg-4.2-win64\lib\avutil.lib REM compile with msvc
cl.exe %compilerflags% %libs% %1 %includes% /link %linkerflags% goto :eof REM concat includes path
:concat
set includes=%includes% /I %1
goto :eof

[原创]在Windows平台使用msvc(cl.exe) + vscode编写和调试C/C++代码的更多相关文章

  1. [原创]在Windows平台使用msys2、mingw64和vscode编写和调试C/C++代码

    相关名词就不解释了,这里主要讲讲在vscode里怎么配,这里假设大家相关工具已经装好. 题外话:里面的大多数坑都是windows平台和linux平台的差异造成的,如果在linux平台配置,应该会顺利很 ...

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

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

  3. (转)Windows 平台下解决httpd.exe: syntax error on line 39

    近来在研究PHP,结果为了Apache的安装伤神不已...小白我在安装后,启动Apache的服务虽然可以,不过,在Apache sevice monitor 中启动services时就会出现如下的问题 ...

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

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

  5. CVE-2010-3974:Windows 传真封面编辑器 FxsCover.exe 双重释放漏洞调试分析

    0x01 堆空间申请后的双重释放 Windows FxsCover 程序存储封面编辑器的信息,封面编辑器是传真服务的一个组件,通过解析特定的传真封面文件(.cov)时,会调用类析构函数对同一内存中的栈 ...

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

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

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

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

  8. Notepad++中调用cl.exe编译器(Windows)

    Notepad++中调用cl.exe编译器(Windows) 近来在notepad++中写代码,写完后总是习惯性的想去VS里面编译一下,看看代码是否有误.但有时候一些零碎的小文件总是懒得再VS中打开, ...

  9. 链接器link.exe 编译器cl.exe 资源编译器rc.exe

    原文地址:https://blog.csdn.net/biggbang/article/details/24433065 1.cl.exe文件是Visual C\C++的编译器,它将程序源代码文件编译 ...

随机推荐

  1. Linux基础(特基本的那种)知识

    (自己的随手笔记,记得有点乱请轻喷) which:查看某个命令的完整路径df -h:查看系统磁盘情况history:查看历史输入的命令 网卡配置路径:vim /etc/sysconfig/networ ...

  2. PTA(Advanced Level)1050.String Subtraction

    Given two strings S1 and S2, S=S1−S2 is defined to be the remaining string after taking all the char ...

  3. HanLP-朴素贝叶斯分类预测缺陷

    文章整理自 baiziyu 的知乎专栏,感兴趣的朋友可以去关注下这位大神的专栏,很多关于自然语言处理的文章写的很不错.昨天看到他的分享的两篇关于朴素贝叶斯分类预测的文章,整理了一下分享给给大家,文章已 ...

  4. 三种SpringSecurity方法级别权限控制

    一 JSR-250注解 1.在pom.xml添加 <dependency> <groupId>javax.annotation</groupId> <arti ...

  5. Win10默认输入法怎么打顿号

    这个问题发现于一个月之前,解决于今天,方式百度. 一.主要是想纪念一下我这一个月的蠢操作(贴图证蠢): 这一个月我的顿号都是这样打出来的,(′д` )…彡…彡 二.闲话少叙,说一下解决方式: 之前用的 ...

  6. session和cookie区别,多台WEB服务器如何共享session,禁用COOKIE后SESSION是否可用,为什么?

    答:session的运行机制: 用户A访问站点Y,如果站点Y指定了session_start();(以下假设session_start()总是存在)那么会产生一个session_id,这个sessio ...

  7. 【Python基础】10_Python中的字典

    1.字典的定义 和列表的区别 列表是 有序 对象的集合 字典是 无序 对象的集合 字典用 {} 定义 键 key 是索引 值 value 是数据 键 和 值 之间用 :分割 键 必须是唯一的 值 可以 ...

  8. 【广搜】Keyboarding

    题目描述 给定一个r行c列的在电视上的“虚拟键盘”,通过“上,下,左,右,选择”共5个控制键,你可以移动电视屏幕上的光标来打印文本.一开始,光标在键盘的左上角,每次按方向键,光标总是跳到下一个在该方向 ...

  9. vue页面顺序规范

    // html模板<template>    <div>因联vue页面规范</div></template><script>   // 模块 ...

  10. Asp.net core 学习笔记 Node Service

    我们知道 npm 是很大的库,很多轮子可以用 所以 .net core 替我们封装了一个调用 nodejs 的 service 就叫 node service 我们只要在 server 安装 node ...