[原创]在Windows平台使用msvc(cl.exe) + vscode编写和调试C/C++代码
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++代码的更多相关文章
- [原创]在Windows平台使用msys2、mingw64和vscode编写和调试C/C++代码
相关名词就不解释了,这里主要讲讲在vscode里怎么配,这里假设大家相关工具已经装好. 题外话:里面的大多数坑都是windows平台和linux平台的差异造成的,如果在linux平台配置,应该会顺利很 ...
- 【原创】Windows平台搭建Kafka源代码开发环境(Eclipse版本)
最近在研究Kafka源代码,需要自己搭建一个开发环境.官网上给出的提示略显简单,照着做了一遍也碰到了一些问题.特此记录下来. 开发环境: Oracle Java 1.7_u71 + Eclipse 4 ...
- (转)Windows 平台下解决httpd.exe: syntax error on line 39
近来在研究PHP,结果为了Apache的安装伤神不已...小白我在安装后,启动Apache的服务虽然可以,不过,在Apache sevice monitor 中启动services时就会出现如下的问题 ...
- 亲试,Windows平台上使用Qt5.2.1编写Android
首先把工具都下载好: 1. Qt for Android: http://qt-project.org/downloads 2. Android NDK http://developer.androi ...
- CVE-2010-3974:Windows 传真封面编辑器 FxsCover.exe 双重释放漏洞调试分析
0x01 堆空间申请后的双重释放 Windows FxsCover 程序存储封面编辑器的信息,封面编辑器是传真服务的一个组件,通过解析特定的传真封面文件(.cov)时,会调用类析构函数对同一内存中的栈 ...
- Windows平台Unity3d播放多路RTMP或RTSP流
好多开发者在做AR.VR或者教育类产品时,苦于如何在windows平台构建一个稳定且低延迟的RTSP或者RTMP播放器,如果基于Unity3d完全重新开发一个播放器,代价大.而且周期长,不适合快速出产 ...
- Windows平台下使用vs code搭建python3环境(1)
前言:最近几周在使用python开发的过程中,碰到了好多坑,由于以前使用visual studio 2015习惯了,导致刚开始搭建python开发环境以及管理各种包的时候有点不习惯,再加上python ...
- Notepad++中调用cl.exe编译器(Windows)
Notepad++中调用cl.exe编译器(Windows) 近来在notepad++中写代码,写完后总是习惯性的想去VS里面编译一下,看看代码是否有误.但有时候一些零碎的小文件总是懒得再VS中打开, ...
- 链接器link.exe 编译器cl.exe 资源编译器rc.exe
原文地址:https://blog.csdn.net/biggbang/article/details/24433065 1.cl.exe文件是Visual C\C++的编译器,它将程序源代码文件编译 ...
随机推荐
- Linux基础(特基本的那种)知识
(自己的随手笔记,记得有点乱请轻喷) which:查看某个命令的完整路径df -h:查看系统磁盘情况history:查看历史输入的命令 网卡配置路径:vim /etc/sysconfig/networ ...
- eNSP——Hybrid接口的应用
原理: Hybrid接口既可以连接普通终端的接入链路又可以连接交换机间的干道链路,它允许多个VLAN的帧通过,并可以在出接口方向将某些VLAN帧的标签剥掉. Hybrid接口处理VLAN帧的过程如下: ...
- Javascript 数组转无限级分类
递归 var arr = [ {"id":1,"parent_id":0,"name":"Foods"}, {" ...
- hdoj1561 The more, The Better (树形dp,分组背包)
题目链接:https://vjudge.net/problem/HDU-1561 题意:给一个森林,每个结点有个权值,求选m个结点的最大权值和,并且选子结点前必须先选父结点. 思路: 把每颗树的树根连 ...
- DB2 数据库权限
以下内容转载: http://blog.csdn.net/xiyuan1999/article/details/8135263 DB2中的权限 DB2 中有三种主要的安全机制,可以帮助 DBA 实现 ...
- oracle建表字段包含关键字注意事项
SQL建表时最好不要把表定义成关键字字段 1 若不小心把表定义成关键字了,比如option, desc等等,oracle版本查询会有问题,短期内无法修改字段名称的,暂时用字段名+双引号解决: SELE ...
- IDEA插件之JProfiler
1.是什么?来用干嘛的? 一个商业授权的Java剖析工具. 用来剖析程序内存.CPU使用情况,找到性能瓶颈,快速定位问题所在. 2.IDEA安装JProfiler插件 (1)File -> Se ...
- springboot中配置文件使用2
本文章接上一篇文章:https://www.cnblogs.com/ysq0908/p/11140931.html 1.使用注解@Value获取配置文件的值 注意:上述中的复杂数据封装指:有map等数 ...
- shiro小记
今天主要看了Shiro的认证,授权功能初步了解了一下,其他的功能用的不多,之后再看. 先说一下Shiro的三个核心概念: 1.Subject: 代表当前正在执行操作的用户,但Subject代表的可以是 ...
- Win7原装ISO镜像封装USB3.0&网卡驱动
Win7原装ISO镜像封装USB3.0&网卡驱动 最新购买的电脑是Windows10系统,想装回Windows7,但是装Windows7发现网络适配器没出现,如果没有USB2.0接口,US ...