两个月前我写过一篇博客 Windows VS Code 配置 C/C++ 开发环境 ,主要介绍了在 VS Code 里跑简单 C 程序的一些方法。不过那篇文章里介绍的方法仅适用于单文件程序,所以稍微大一点的项目就力不从心了。

但是对于课程设计这类,说大不大说小也不算小的 C++ 项目,也不是特别想用大型 IDE(如VS)……所以我更新了一下相关的 VSC 配置,使其也能用于多文件的 C++ 项目。

为了方便以后复用,也给其他有类似需求的人一个参考,相关的配置文件整理如下(新建项目时复制一份到 .vscode 里就行了)。

这一年来 VS Code 的 C/C++ 扩展 更新了不少,还支持在 WSL 里 Remote 开发了。不过本文中还是继续以 Windows 下的 MinGW-w64 为例。WSL 的配置也差不多,有兴趣的可以看看参考链接里的官方文档。

c_cpp_properties.json:

{
"configurations": [
{
// 配置的名称,可以添加多个在编辑器右下角切换
"name": "MinGW",
"intelliSenseMode": "gcc-x64",
// 这里的编译器路径,包括下面的一些选项都只是
// 给 IntelliSense 用的,和具体项目构建没关系
"compilerPath": "C:\\Portable\\mingw64\\bin\\gcc.exe",
"includePath": [
"${workspaceFolder}/**"
],
"defines": [],
"cStandard": "c11",
"cppStandard": "c++17"
}
],
"version": 4
}

tasks.json:

{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
// 任务标签名
"label": "compile",
// 任务类型
"type": "shell",
// 编译器选择
"command": "g++",
// 编译预执行的命令集
"args": [
"-g",
"\"${file}\"",
"-o",
"\"${fileDirname}\\${fileBasenameNoExtension}\""
],
// 任务输出配置
"presentation": {
"reveal": "always",
"panel": "shared",
"focus": false,
"echo": true
},
// 任务所属组名
"group": "build",
// 编译问题输出匹配配置
"problemMatcher": {
"owner": "cpp",
"fileLocation": "absolute",
"pattern": {
"regexp": "^(.*):(\\d+):(\\d+):\\s+(error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
}
},
{
"type": "shell",
"label": "C/C++: g++.exe build active file",
"command": "C:\\Portable\\mingw64\\bin\\g++.exe",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "${workspaceFolder}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}

launch.json:

{
"version": "0.2.0",
"configurations": [
{
// 使用 GDB 调试程序
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
// 之前编译好的可执行文件路径
"program": "${workspaceFolder}/build/${workspaceFolderBasename}.exe",
"args": [],
"stopAtEntry": false,
// 设置 cwd 到 build 目录
"cwd": "${workspaceFolder}/build",
"environment": [],
// 不要在集成终端里运行程序
"externalConsole": true,
"MIMode": "gdb",
// 调试器可执行文件的路径
"miDebuggerPath": "C:\\Portable\\mingw64\\bin\\gdb.exe",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
// 调试前先运行 compile(定义在上面的 tasks.json 里)
"preLaunchTask": "compile"
}
]
}

稍微解释一下这些文件的作用。

这三个文件都是放在项目的 .vscode 目录下的,其中 c_cpp_properties.json 用于配置 VSC 的 C/C++ 扩展,tasks.json 配置项目的构建流程,launch.json 则是配置如何运行(或调试)构建好的程序。

在 VSC 内编辑这些配置文件时,鼠标移动到 JSON 的 key 上就可以查看相关配置项的说明,非常方便。另外 c_cpp_properties.json 这个文件,也可以通过 Ctrl + Shift + P 面板运行 C/C++: Edit Configurations (UI) 命令打开图形化配置页面。关键配置项的作用都已经在上面的注释里说明了,就不再赘述。

最终整个项目的目录结构应该是这样的:

$ tree -a
.
├── .vscode
│ ├── c_cpp_properties.json
│ ├── launch.json
│ ├── settings.json
│ └── tasks.json
├── build
│ └── vscode-cpp-quick-setup.exe
└── src
├── Greeter.cpp
├── Greeter.h
└── main.cpp

所有源代码放在 src 目录中,编译后的可执行文件将以当前 workspace 命名(一般是目录名),存放于 build 目录中。

VS Code C++ 项目快速配置模板的更多相关文章

  1. 携程Apollo(阿波罗)配置中心在Spring Boot项目快速集成

    前提:先搭建好本地的单机运行项目:http://www.cnblogs.com/EasonJim/p/7643630.html 说明:下面的示例是基于Spring Boot搭建的,对于Spring项目 ...

  2. Android Studio 配置快速生成模板代码

    前言 Android studio 有提供快速生成模板代码的功能,其实这个功能也可以自定义配置.此篇博客将讲解如何使用此功能 进入Settings 选择 Editor > Live Templa ...

  3. 携程Apollo(阿波罗)配置中心在.NET Core项目快速集成

    .NET Core的支持文档大体上可以参考文档.Net客户端使用指南:https://github.com/ctripcorp/apollo/wiki/.Net%E5%AE%A2%E6%88%B7%E ...

  4. 肝了一个半月的 Java 项目快速开发脚手架:Chewing

    前言 闲来无事,整一个 Java 项目快速开发脚手架. 正文 一.简介 Chewing 是一个简单的 Java 项目快速开发脚手架.既适合需要开发小型项目的小伙伴使用,也适合刚入门的新手用来学习一些常 ...

  5. Log4net快速配置使用指南。(快速搭建log4net日志平台手册)

    每做一个新项目,都会用到log4net,但总是忘记如何快速配置.有时在网上搜半天也找不到好的模板,大都在介绍参数的使用,在此做下总结,争取下次用时仅10分钟就可搭建好log4net. 直接上介绍的步骤 ...

  6. VS Code做项目的笔记

    需要自己研究的东西:http://www.bootcss.com/ 画页面时的布局插件:http://blog.chinaunix.net/uid-22414998-id-2878529.html v ...

  7. Sitecore CMS中配置模板部分

    如何在Sitecore CMS中配置模板部分. 注意: 本教程将扩展于“Sitecore CMS中创建模板”的章节. 配置折叠状态 配置模板部分的折叠状态允许用户选择默认折叠或展开哪些模板部分.此设置 ...

  8. Yii2 的快速配置 api 服务 yii2-fast-api

    yii2-fast-api yii2-fast-api是一个Yii2框架的扩展,用于配置完善Yii2,以实现api的快速开发. 此扩展默认的场景是APP的后端接口开发,因此偏向于实用主义,并未完全采用 ...

  9. Umi 小白纪实(一)—— 创建项目&常用配置

    umi 是一个企业级 react 应用框架,也是蚂蚁金服的底层前端框架 <蚂蚁金服的前端框架和工程化实践> 一.安装脚手架 在创建项目之前,需要保证有 node 8.10 以上的环境 可以 ...

随机推荐

  1. pause容器作用

    1.概念 Pause容器 全称infrastucture container(又叫infra)基础容器. 作为init pod存在,其他pod都会从pause 容器中fork出来. 每个Pod里运行着 ...

  2. .NET redis 客户端开源组件 FreeRedis (继 CSRedisCore 之后重写)

    什么是 FreeRedis FreeRedis 是一款 .NET redis 客户端开源组件,以 MIT 协议开源托管于 github,目前支持 .NET 5..NETCore 2.1+..NETFr ...

  3. UOJ Round总结

    #22. [UR #1]外星人 一开始随便搞出第一问答案,很显然的性质对$x$有变化的$a$一定是递减的,就拿一个桶直接记录可以达到的值 然后我开始想第二问,一开始想直接在这个桶上统计答案,然后发现不 ...

  4. 细学C++之C++语言的特点

    优点: 1.强大的抽象封装能力:这让C++语言具备了强大的开发工程能力 2.高性能:运行快,并且占用资源少 3.低功耗:适合在各种微型的嵌入式设备中运行高效的程序 缺点: 1.语法相对复杂,细节比较多 ...

  5. 文科妹子都会用 GitHub,你这个工科生还等什么

    在某乎上刷到一条关于 GitHub 的留言,如下: 点赞人数还不少,这说明还真有不少工科生不会用 GitHub,你看大小写都没有区分(手动狗头).所以我就想写篇文章科普下,"新手如何使用 G ...

  6. day89:luffy:使用Celery完成我的订单超时取消&Polyv视频加密播放

    目录 1.我的订单超时取消 2.PoliV视频播放 1.我的订单超时取消 使用Celery完成超时取消功能 mycelery/order/tasks.py from mycelery.main imp ...

  7. vue 常用操作

    :class="{selects:source==1}"  根据变量添加class :style="{paddingTop: top}" :style=&quo ...

  8. php判断用户设备类型

    最近做的一个需求里面希望能判断用户访问页面的设备类型,根据不同的类型去加载不同的数据和页面样式.由于技术栈是使用的php,于是考虑在php层面去做这个判断. 假设主要判断的设备有平板和手机为主,分两个 ...

  9. 变强——GitHub 热点速览 Vol.46

    作者:HelloGitHub-小鱼干 网络不通怎么办?Ping 就是你的调试大招,而 gping 则是 Ping 的内功,终端可视化显示 Ping 结果,一眼看明数据接收情况.前端调试大招又是什么呢? ...

  10. shell编程之条件与分支语句

    1.if条件分支语句 if   expr1(条件测试)   #如果expr1为真,返回0 then commands1 elif  expr2 then commands2 .... ... else ...