【开发环境配置】VScode + gcc + cmake in Windows

这篇博客介绍了如何在Windows环境下配置VScode以使用gcc和CMake进行C++开发。内容包括安装MinGW和CMake,配置VScode,使用g++编译和调试cpp文件,以及调试CMake生成的可执行文件。同时讲解了主流C++编译器GCC、Clang和Microsoft C++ Collection的特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

主流C++编译器

参考文档
原视频

1. Gnu Complier Collection

一组编译器套件,并非单独的一个编译器。包含C/C++、Objective-C、Java、Go等语言的编译器,以及这些语言的库(e.g. libstdc++、libgcj)


gcc/g++:gcc 和 GCC 是两个不同的东西,gcc 是 GCC 中的 GNU C Complier(C编译器),而 g++ 是 GCC 中的 GNU C++ Complier(C++编译器)。

而究其本质,gcc/g++ 不是编译器,只是一种驱动器,根据参数中要编译的文件类型(.c .cpp)调用相应的GNU编译器。

  • gcc 将 .c 文件和 .cpp文件分别当做 c 和 c++ 文件编译,不自动连接 STL
  • g++ 将 .c 文件和 .cpp文件统一当做 c++ 文件编译,并且自动连接 STL

因此,使用 gcc 编译 c++ 文件,需要手动加参数 -lstdc++ 以使用 STL,但并非gcc -lstdc++g++等价。

2. Clang

基于LLVM


传统编译器架构:

  • Frontend 前端:语法分析,生成中间代码
  • Optimizer 优化器:优化中间代码
  • Backend 后端:生成机器码

LLVM:一种新式编译器架构,它的 前端后端模块化的,而所有的前端通过同一个LLVM优化器,再分别链接不同的后端。
比如,Clang 就是 LLVM 对于 C/C++ 的Frontend,对于其它语言来说,也都有各自对应的前端。而针对不同的体系结构如 x86、arm,也有相应的 LLVM for x86/arm Backend

  • 如果需要支持一种新的编程语言,只需要实现一个新的前端
  • 如果需要支持一中新的硬件设备,也只需要实现一个新的后端

对于传统编译器如 GCC 来说,每一种语言都需要一个前端、一个后端、一个优化器,前后端高耦合,扩展性显而易见地弱于 LLVM。

相较于 GCC,Clang还具有以下优点:

  • 编译速度快
  • 占用内存小
  • 中间代码可读性强,便于调试和诊断

3. Microsoft C++ Collection

Microsoft Visual C++,即 MSVC,是 Windows Visual Studio 的一部分,是其中C、C++ 和汇编语言的开发工具


可以同时安装 VS2015/17/19 三个版本,它们编译器大版本都是14

Visual Studio版本 Visual C++ 版本 C++编译器版本
VS2015 msvc-140 v140
VS2017 msvc-150 v141
VS2019 msvc-160 v142

Q:为什么不同的处理器需要不同的C++编译器?
A:不同的CPU体系结构(x86、x64、arm)具有不同汇编指令集,而编译器恰恰是把C++代码翻译成汇编代码的工具。

Q:为什么不同的操作系统厂商也在发展各自的编译器?
A:虽然C++标准库是一样的,但是在不同操作系统上的实现不同,因为需要适配不同操作系统的自有头文件动态库等。(e.g. windows sdk、win32 API、linux-xx-dev)

Q:What is GNU?
AGNU is Not Unix,是自由软件基金会发起的一项计划,这个计划中包含许许多多的软件,GCC 编译器是其中之一,而Linux系统本身也是一个GNU软件。GNU 规定了这些软件需要遵守的一些协议条款,满足这些协议的软件就被视为GNU软件,其中最著名的就是GPL协议。其实,70年代出现的UNIX 作为一种商业用操作系统不开源、不免费(e.g. solaris)。因此1985年,Richard Stallman创立自由软件基金会为GNU计划提供支持,GNU的最终目标就是开发一套开源免费的操作系统,并设计了开源免费的内核Hurd。当时的计算机并没有各种各样的io设备,所谓的操作系统基本等于内核。Linus Torvalds在1991年设计出了开源、免费的Unix-like的内核Linux,并且由于其Unix-like的特性,使其可以兼容许多Unix软件,相较于Hurd优势巨大。而Linux的开源协议,恰恰就是GPL。在开源过程中,GNU中的许多工具(GNU包含许多软件,且均开源,这些软件中有一些工具性质的软件,比如GCC)被集成到Linux平台。最后,GNU的计划也算成功实现了——虽然Hurd失败了,但Linux成功了。Linux的发行版,指的是使用Linux内核,并做了一些其它功能的操作系统软件。

step1 安装MinGW和cmake

MinGW
cmake

  1. 下载 MinGW 和 cmake
  2. 找到文件夹 …\MinGW\bin,复制该文件的路径
  3. 设置环境变量,在用户变量的 Path 中新建一个环境变量,将复制的路径粘贴进去,确定
  4. win + R呼出 cmd,输入g++ --version查看版本信息,显式 GCC 则说明配置成功
  5. 如此对 …\cmake-3.21.3-windows-x86_64\bin 添加环境变量,在 cmd 内输入cmake --version查看版本信息

Q:What is Cmake?
A:Cmake 是一款快捷生成 makefile 的工具,makefile 是编译大型软件前我们提前设置好的编译规则,然而 makefile 的编写并不容易,使用 Cmake 可以大大简化编写 makefile 的工作量

step2 配置VScode

  1. 安装 Code Runner 扩展
  2. 安装 C/C++ 扩展(注意安装在原生系统中还是 WSL 中)
  3. 在文件夹中打开 VScode,ctrl + alt + n运行代码,计划通
  4. 文件-首选项-设置,输入run in terminal,找到 Code Runner 对应的选项,打勾,这样在终端运行时就不再是只读权限,我们可以向程序输入内容了
  5. 继续安装 cmake 和 cmake tools 扩展
  6. ctrl + shift + p搜索JSON,打开C/C++:JSON,将c_cpp_properties.json中的内容更改如下
{
   
    "configurations": [
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值