VSCode配置编译MSVC程序

本文来自于以下链接的实践:
Configure VS Code for Microsoft C++

前言

自从盘古开天辟地以来,乱世纷争,群雄并起。在编程IDE领域,各路豪杰争霸,互不相让。直是乱花渐欲迷人眼,何处是归途?所谓天下大势,分久必合。微软乃上顺天意,下应民心,兼相爱,交相利。于是,VSCode横空出世,利刃出鞘,魑魅魍魉,片甲不留。一时间,各路豪杰避之唯恐不及。其构思精妙绝伦,色泽圆润无比。30多万行脚本代码,垒出盖世神宫,不可谓不是神来之笔。从此以后,秦时明月,汉时古道,小桥流水,暖玉生烟,乾坤朗朗,天下太平。

Electron 可以让你使用纯 JavaScript 调用丰富的原生 APIs 来创造桌面应用

VSCode团队负责人:Erich Gamma . JUnit 作者之一,《设计模式》作者之一, Eclipse 架构师。2011 加入微软,在瑞士苏黎世组建团队开发基于 web 技术的编辑器,也就是后来的 monaco-editor。VSCode 开发团队从 10 来个人开始,早期成员大多有 Eclipse 开发团队的背景。

配置编译MSVC程序

  1. 确定已经安装了Microsoft Visual Studio(我用的是2015)。点此直达Visual Studio下载页面。安装位置在C盘默认位置。为此C盘至少要有500GB空间,这样才能一劳永逸。
  2. 确定已经安装了VSCode.点此直达VSCode下载页面.如果选择了zip包,需要手工配置Path环境变量。
  3. 编辑2个批处理文件,一个用于编译32位程序(vscode-x86.bat),一个用于64位(vscode-x64.bat)。都放在桌面上备用。内容一句话(根据Visual Studio安装位置决定):
  • vscode-x86.bat

    cmd /K "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86
    
  • vscode-x64.bat

    cmd /K "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64
    

    检查载入的环境:

    cl.exe /?
    
  1. 双击 vscode-x64.bat 打开一个cmd窗口,在此窗口中输入命令以切换到工程父目录。新建helloworld工程。

    cd ..
    mkdir Projects
    cd Projects
    mkdir helloworld
    code .
    
  2. 从此 helloworld 项目目录 “${workspaceFolder}” 就是你的衣食父母。
    code . 命令在${workspaceFolder}目录下创建了一个文件夹.vscode,里面未来将会有3个文件:
    (1) tasks.json (构建设定)
    [VSCode菜单] Terminal > Configure Default Build Task
    选中 C/C++: cl.exe build active file,新建或打开 tasks.json

    (2) launch.json (调试设定)
    [VSCode菜单] Debug > Add Configuration…
    选中 C++ (Windows),新建launch.json

    (3) c_cpp_properties.json (编译路径和智能提示设定)
    Ctrl+Shift+P
    输入: C/C++: Edit Configurations (UI 或 JSON)

  3. 给你的项目添加源代码文件

  4. Ctrl+Shift+B 编译

  5. F5 调试
    调试的快捷键用法和VisualStudio一样。

helloworld示例工程

  1. 项目结构

    helloworld/|+-- .gitignore+-- Makefile+-- README.md+-- VERSION+-- AUTHOR+-- .git/+-- .vscode/|+-- tasks.json+-- launch.json+-- c_cpp_properties.json+-- src/|+-- helloapi.h+-- helloapi.c+-- helloworld.c
    
  2. 部分文件内容

  • tasks.json

      {// See https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation about the tasks.json format"version": "2.0.0","tasks": [{"type": "shell","label": "cl.exe build active file","command": "cl.exe","args": ["/Zi","/EHsc","/Fe:","${workspaceFolder}\\build\\helloworld.exe","${workspaceFolder}\\src\\helloworld.c","${workspaceFolder}\\src\\helloapi.c"],"problemMatcher": ["$msCompile"],"group": {"kind": "build","isDefault": true}}]}
    
  • launch.json

      {// Use IntelliSense to learn about possible attributes.// Hover to view descriptions of existing attributes.// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"name": "cl.exe build and debug active file","type": "cppvsdbg","request": "launch","program": "${workspaceFolder}/build/helloworld.exe","args": [],"stopAtEntry": true,"cwd": "${workspaceFolder}/build","environment": [],"externalConsole": false,"preLaunchTask": "cl.exe build active file"}]}
    
  • c_cpp_properties.json

      {"configurations": [{"name": "Win32",  // Win32, Linux, Mac 这3名字是针对特定平台的保留字,系统会自动匹配。其他名字任意"includePath": ["${workspaceFolder}/src/**","C:/Program Files (x86)/Windows Kits/10/Include/10.0.10240.0/**"],"defines": ["_DEBUG","UNICODE","_UNICODE"],"windowsSdkVersion": "10.0.10240.0","compilerPath": "C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/cl.exe","cStandard": "c11","cppStandard": "c++17","intelliSenseMode": "msvc-x64"}],"version": 4}
    
  • helloapi.h

    /*** helloapi.h*/
    #ifndef HELLOAPI_H
    #define HELLOAPI_H#if defined(__cplusplus)
    extern "C"
    {#endifextern const char * get_appname (void);extern const char * get_version (void);#ifdef __cplusplus
    }
    #endif#endif /* HELLOAPI_H */
    
  • helloapi.c

      #include "helloapi.h"const char * get_appname (void){return "helloworld";}const char * get_version (void){return "0.0.1";}
    
  • helloworld.c

      #include <stdio.h>#include "helloapi.h"int main (int argc, const char *argv[]){printf("%s-%s sample with vscode!\n", get_appname(), get_version());return 0;}
    
  • Makefile (build for gcc)

    PREFIX=.BUILDDIR=$(PREFIX)/buildSRCDIR=$(PREFIX)/srcAPPINCLUDE=-I$(SRCDIR)# cygwin or linux
    CC=gcc# build for release
    CFLAGS=-D_GNU_SOURCE -DNDEBUG -O2# build for valgrind memory check:
    #   $ valgrind --leak-check=full --show-leak-kinds=all ./logapp -n10000000
    #CFLAGS=-D_GNU_SOURCE -g# application binary
    APPBIN=helloworld# objects for static lib
    APPOBJS=helloapi.oall: $(APPBIN)help:@echo "make"helloapi.o: $(SRCDIR)/helloapi.c$(CC) $(CFLAGS) -c $(SRCDIR)/helloapi.c -o $@# target for building application
    $(APPBIN): $(APPOBJS) $(SRCDIR)/helloworld.c$(CC) $(CFLAGS) $(SRCDIR)/helloworld.c $(APPINCLUDE) -o $@ \$(APPOBJS) \-lpthread -lrt -lmclean:-rm -f $(BUILDDIR)/*.PHONY: all clean
    

VSCode配置编译MSVC程序相关推荐

  1. Go VSCode配置编译task

    菜单栏Tasks->Configure Tasks {"version": "2.0.0","tasks": [{"labe ...

  2. vscode配置OpenGL开发环境【详细】

    vscode配置OpenGL开发环境[详细] 0. 前言 本配置过程是参考b站的一位up主文档大嫖客的视频,将其总结为文本文档,以便记忆. up主视频地址为:https://www.bilibili. ...

  3. VSCode配置C++环境(MSVC)

    VSCode配置C++环境(MSVC)  最近心血来潮,想用一下微软的VSCode写一下C++,然而第一步就卡住了,竟然不会配置C++环境,陆陆续续搞了两天,总算是弄明白了,网上msvc教程比较少,就 ...

  4. windows环境下VSCode配置C++教程(使用msvc编译器)

    写在前面 VSCode是个优秀的.开源的.可扩展的代码编辑器,今天就来介绍一下在windows系统下如何用它来配置C++环境. 须知VSCode只是个编辑器,它自己是不带有编译.构建.调试等工具套件的 ...

  5. vs配置编译c语言,为 VSCode 配置 C 语言编译环境

    1. 前提条件 安装 VSCode 以及 MinGW 安装好 VSCode 中的 C/C++ 扩展 [图片上传失败...(image-e93c7c-1606314000230)] PS: 我建议使用 ...

  6. deepin终端编译c程序_Deepin Linux安装使用Visual Studio Code(VSCode)调试C++

    昨天换了Deepin Linux,感觉很不错的样子,至少对于对操作系统颜值很重视的我来说,非常好用.准备长期使用. 平时使用Windows下的DEV CPP比较爽,调试功能鼠标悬浮看变量的功能非常好用 ...

  7. vscode配置c/c++编译环境(最终解决办法)

    vscode配置c++编译环境的完美配置与问题解决 如图,博主在用vscode配置c++时出现了很多问题: 当时真的要崩溃了,我的错误提示是:preLaunchTask"Compile&qu ...

  8. VScode配置C语言编译环境

    VScode配置C语言编译环境 前言 最近学校开了c语言课,使用vc6.0来编写c语言,但vc6.0太旧,没有代码补全和代码检查功能,所以我花了很长时间配置vscode的c开发环境,由于第一次配置,花 ...

  9. stm32 vscode 编译_linux 下 VSCODE 使用CMake编译STM32程序

    摘要: M32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.c.obj[67%]Builttargetstm32l051Scanningdependencieso ...

  10. VScode配置makefile编译

    VScode配置makefile编译 Author:onceday date:2022年7月26日 1.修改终端任务配置(Terminal) {// See https://go.microsoft. ...

最新文章

  1. Visual Studio 2017 版本 15.5.5
  2. 产品诞生过程--导图
  3. 后台开发人员面试内容——JVM虚拟机(四)
  4. mysql多种join_MySQL的几种Join
  5. 让数据库无惧灾难,华为云GaussDB同城双集群高可用方案正式发布!
  6. 解决js array的key不为数字时获取长度的问题
  7. JavaScript——this与箭头函数
  8. mysql中的编号怎么自动加_MySQL中实现ID编号自动增加的方法
  9. 关于盒子模型的应用(制作三角形)
  10. Bash and a Tough Math Puzzle CodeForces 914D 线段树+gcd数论
  11. TOGAF 架构内容框架
  12. 神策分析 2.1 版本正式发布!
  13. 原创 | 最近程序员频繁被抓,如何避免面向监狱编程?!
  14. 网络错误0x80070005,访问被拒绝[亲测解决]
  15. python 省略号 三个点...的含义
  16. IDEA: 自动优化导包 Auto Import
  17. SSH证书登录方式(无密码验证登录)
  18. 预训练模型与传统方法在排序上有啥不同?
  19. 计算机应用基础试题事业单位,事业单位考试计算机基础知识试题及答案
  20. SRPG游戏开发(五十六)第十一章 地图动作与地图事件 - 五 移动、攻击与待机(Move, Attack and Holding)

热门文章

  1. 智能家居出货量将达5.4亿台,全屋智能线下渠道是推广主力
  2. jpg转换成pdf转换器免费版哪个好
  3. 作业5:链家.csv
  4. @Deprecated 的功能
  5. Vuforia SDK导入问题Vuforia.UnityExtensions Consider removing one of the references or sign the assembl
  6. 写好的python如何在其它电脑上运行_写人作文-写人作文300字-400字-500字
  7. 计算机中文档的后退键,后退快捷键ctrl加什么
  8. 深度学习中优化方法——momentum、Nesterov Momentum、AdaGrad、Adadelta、RMSprop、Adam
  9. java计算机毕业设计婴幼儿玩具共享租售平台源码+数据库+系统+lw文档+mybatis+运行部署
  10. 三维重建之结构光编码方案研究