[原创]在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++的编译器,它将程序源代码文件编译 ...
随机推荐
- Docker存储容易忽略的使用细节
一.Docker容器使用前其实有个非常重要的步骤就是规划好部署的磁盘区域,因为docker容器默认存储的路径是在/var/lib/docker的根目录内,随着使用时间越长部署的内容越多,基本的根目录的 ...
- go语言简单介绍,增强了解
1. Go语言没有类和继承的概念,所以它和 Java 或 C++ 看起来并不相同.但是它通过接口(interface)的概念来实现多态性.Go语言有一个清晰易懂的轻量级类型系统,在类型之间也没有层级之 ...
- JS获取URL地址
var url = window.location.href;
- Java反射:Web学习的灵魂
反射:Web学习的灵魂 我们从最初的 javac -HelloWorld.java,到面向对象部分,我们可以将Java代码在计算机中经历的阶段分为三部分:Scource源代码阶段 -- Class类对 ...
- axios设置请求头内容
axios设置请求头中的Authorization 和 cookie 信息: GET请求 axios.get(urlString, { headers: { 'Authorization': 'Bea ...
- 虚拟局域网VLAN的Packet tracer实验
ICMP的广播请求 Create PDU pc1发向交换机 交换机的其余端口向外发送该广播 ------------------------------------------------------ ...
- HDU - 2196(树形DP)
题目: A school bought the first computer some time ago(so this computer's id is 1). During the recent ...
- linux下mysql启动 Starting MySQL. ERROR! The server quit without updating PID file(xxx/x.pid)
service mysql start 报错: Starting MySQL. ERROR! The server quit without updating PID file(xxx/x.pid) ...
- 社工工具包 SEToolkit
社会工程学(Social Engineering)简称社工,其通过分析攻击对象的心理弱点,利用人性的本能反应,以及任何好奇心,贪婪等心理特征进行的,使用诸如假冒,欺骗,引诱等多种手段来达成攻击目标的一 ...
- spring-boot-plusV1.2.3发布,CentOS快速安装环境/构建/部署/启动项目
spring-boot-plusV1.2.3发布,CentOS快速安装环境/构建/部署/启动项目 [V1.2.3-RELEASE] 2019.09.09