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. [转帖]phoronix-test-suite测试云服务器

    phoronix-test-suite测试云服务器 https://www.cnblogs.com/tanyongli/p/7767804.html centos系统 phoronix-test-su ...

  2. Zabbix的history相关数据表数据太大,执行表分区操作过程

    一.查询zabbix数据库大小 mysql> select table_schema, concat(truncate(sum(data_length)/1024/1024,2),' mb') ...

  3. 如何使用RedisTemplate访问Redis数据结构之Hash

    Redis的Hash数据机构 Redis的散列可以让用户将多个键值对存储到一个Redis键里面. public interface HashOperations<H,HK,HV> Hash ...

  4. Python基础学习路径

    1. Python数据结构 1. 基本数据类型(整数.小数.字符) 1.基本数据类型有5种:int bool float complex long 2.每一种数据类型该如何定义 3.数据类型之间可以强 ...

  5. 17.Letter Combinations of a Phone Number (char* 和 string 相互转化)

    leetcode 第17题 分析 char*和string相互转化 char*(或者char)转string 可以看看string的构造函数 default (1) string(); copy (2 ...

  6. Zynq-7000 MiZ701 SOC硬件使用手册

    一.整体概述 4 二.应用领域及人群 4 三.硬件配置 4 BANK资源分配 6 四.MiZ701开发板功能描述 7 4.1 全编程SOC(All Programmable SoC) 7 4.2 内存 ...

  7. 关于FSM的C语言实现与详解

    最近一个项目有一个需求,考量了一下决定使用状态机,实现完需求以后,不得不感慨,状态机在处理逻辑上面实现起来很有优势,也便于管理. 在这里分享一下我所修改的状态机实现.改动的地方不多,参考了<C语 ...

  8. javascript 构建模块化开发

    在使用 sea.js .require.js . angular 的时候. 我们使用到  define . module(require) 的方式,定义模块,和依赖模块 下面给出 define 和 m ...

  9. java Map 四种遍历方法

    public static void main(String[] args) { Map<String, String> map = new HashMap<String, Stri ...

  10. 【web安全】浅谈web安全之XSS

    XSS定义 XSS, 即为(Cross Site Scripting), 中文名为跨站脚本, 是发生在目标用户的浏览器层面上的,当渲染DOM树的过程成发生了不在预期内执行的JS代码时,就发生了XSS攻 ...