我们从C++环境搭建就提及到gcc、g++、make等技术名词,其实一个完整并且正常运行的C++程序必需包含编译器和构建工具,由于C++已有多年的发展历程,衍生多种了编译器和构建工具。今天码上去学海南公司和大家聊聊C++的编译器和构建工具!
编译器分类
C++的编译器可以分为4大类:GCC家族、MS家族、Borland家族、其他小家族。
- GCC家族
类别细分如下:
cygwinMinGwDJGPP
Dev-C++(MinGw)
GNU Gcc
GNU C++
g++
Cygwin和MinGW都是WIN平台下的编译器,DJGPP是DOS下的32位编译器,DEV-C++充只是GCC的一个外壳,它所自带编译器是MinGW某个版本。其中GNU GCC是根本,其它编译器版本都是从它延伸发展的。
在这些GCC的版本中,Cygwin最为庞大,不仅是一个编译器,还是一套编程工具,不仅含有编译器,还包含了其他工具。
- MS家族
类别细分如下:
MSC
MsQc
MSvc
visual C++
主要由微软研发,并且集成到Visual Studio。其中Visual C++最为主流,包含强大的类和内嵌WinAPI的MFC,具有可视化的编程界面,软件报错比较准确。
- Borland家族
类别细分如下:
TC
TC++
BC
BCB
Borland C++
由Borland公司研发的,作为Borland C++ Builder和Borland C++ Builder X的IDE编译器。
- 其他小家族
类别细分如下:
Intel C/C++
watcom C/C++
vectorc
IBM VisualAge for C++
DigitalMars C/C++
KAI C/C++ 4.03f for RedHat 7.2
Lcc4.1
LCC-WIN32
small c
CC386
Pacific c
Intel C/C++
在所有编译器中,目前GCC家族和Visual C++是主流编译器,因此项目的技术选型应尽量选择主流编译器。
构建工具分类
构建工具是将C++源码文件生成可执行文件,目前常用C++构建工具如下所示:
CMake
Make
Ninja
Bazel
每个构建工具说明如下:
- CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的编译过程;他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。
- Make是一款传统的构建工具,它本身没有编译功能,而是通过调用makefile文件的命令来进行编译和链接
- Ninja是一个小型的构建系统,专注于速度。它被设计为处理大型软件项目,如Chrome浏览器等,Ninja的主要目标是提供最大的构建速度。
- Bazel 是一个类似于Make的工具,是Google为其内部软件开发的特点量身定制的工具,如今Google使用它来构建内部大多数的软件。
在上述构建工具中,CMake是使用最普及的构建工具。
至此,我们大致掌握了C++的编译器和构建工具的分类,这样有利于项目开技术选型。
以上就是本次分享的全部内容,想学习更多编程技巧,欢迎持续关注码上去学海南公司!