c++编译工具链

1 C/C++编译工具进化

C/C++开发中使用到的代码编译工具GCC、make、cmake,进化历程如下。

1) 为什么需要gcc?

试想,我们写了一份C++源码文件main.cpp,该如何让它变成可执行文件呢?对,用编译器将源码文件翻译成可执行文件,此时就会用到GCC

GCCGNU Compiler Collection。可以简单理解为编译器,其主要作用就是将源码文件编译为可执行文件(gcc相关内容较多,不是本片重点,不展开讲)。

gcc -C main.cpp -o myApp

以上命令可以帮助我们将源码文件 main.cpp 生成可执行文件 myApp。所以 gcc 实际上是为我们提供了一套编译工具。

2)为什么需要make?

实际上,在一个项目/工程中会包含很多源码文件(注意,头文件一般不会单独编译,而是作为源文件的附属文件展开),此时编译命令就会变得冗长、繁杂,每次编译都会额外浪费大量的时间和精力,因此就需要一个自动化工具来帮助我们完成这些工作,make就是这些工具中很杰出的一位。

makeGNU Make。通过编写的Makefile脚本文件描述整个工程的编译、链接规则,然后一键编译项目。注意,make需要我们提前写好Makefile脚本,然后make工具根据Makefile描述的规则编译代码。假设我们的工程有main.cpp、MyFunction.c两个源文件,我们只需要写如下Makefile

/* MakeFile */
myApp.exe : ../main.cpp ../MyFunction.c
    gcc -o myApp ../main.cpp ../MyFunction.c

然后执行命令

make

即可得到我们想要的可执行文件 myApp。(由于我们举的例子比较轻量,没展示出make的威力,在大型工程中make带来的收益是巨大的)

3)为什么需要cmake?

由于Makefile的语法比较复杂,对于比较大的项目Makefile的复杂度也很高,所以当项目的物理结构发生变化时维护Makefile也是一项比较困难的工作。为了让程序员从Makefile中解脱出来,cmake诞生了。

cmake跨平台的安装(编译)工具cmake可以用来生成工其他源码编译工具使用的MakefileProject等文件。cmake依赖于规则描述文件CMakeList.txt,写好CMakeList.txt后执行cmake命令,即可得到我们需要的Makefile,然后执行make命令生成可执行文件。

已前面的代码为例,我们只需要写如下CMakeList.txt

cmake_minimum_required(VERSION 3.0)

project(myApp)

MESSAGE(${CMAKE_CURRENT_SOURCE_DIR})
MESSAGE(${CMAKE_C_COMPILER})

file(GLOB_RECURSE files
    ./main.cpp
    ./MyFunction.c
)

add_executable(myApp ${files})

顺序执行命令

# first
cmake

# then
make

即可得到我们需要的可执行文件myApp

2 CMakeList.txt

目前,我们经常用到的编译工具就是cmakemake。先用cmake生成Makefile,然后使用make将源码文件(集)编译为可执行文件。

这两个工具使用起来非常简单,只需要顺序cmakemake即可,但是cmake需要读规则描述文件CMakeList.txt,所以执行命令之前我们需要提供CMakeList.txt文件。

CMakeList.txt的书写规则:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值