一点一滴成长

导航

Make和CMake

1、gcc

  gcc main.c是生成可执行文件(包括编译和链接),可执行文件名默认为a.out,可以加上-o指定生成的可执行文件名:gcc main.c -o ma。

  gcc main.c实际上相当于两条语句:gcc -c main.c(生成目标文件main.o) + gcc main.o(链接生成可执行文件a.out,指定生成的可执行文件名的话为gcc main.o -o name)。

  gcc编译两个文件:gcc func1.c func2.c -o fun

2、Make

  使用gcc编译多个文件或者一个庞大项目的话使用gcc就很麻烦,这时候可以用make命令工具,使用make需要先生成一个makefile文件,在这个文件中包含要创建的目标文件或可执行文件、创建目标文件所依赖的文件和需要运行的命令、编译顺序等信息,make通过读入和解释Makefile中内容来执行gcc/g++编译工作。使用make的另一个优点就是如果有一个文件修改了,那么它能使该文件和所有受影响的文件进行重新编译,而不受影响的文件就不必重新编译,这样就节省了编译时间。

  大多数的IDE都有make这个命令,比如Linux下GNU的make,Visual C++的nmake。

3、CMake

  cmake是更高级的跨平台项目管理工具, 它可以根据不同平台、不同的编译器,生成相应的Makefile(在Windows下即为vcproj项目文件)。

  qmake是Qt的项目管理工具,对应的工程文件是*.pro,在Linux下面它也会生成Makefile。

4、GCC-> Make -> CMake

  写程序大体步骤为:

  ①、用编辑器编写源代码,如.c文件。

  ②、用编译器编译代码生成目标文件,如.o。

  ③、用链接器连接目标代码生成可执行文件,如.exe。

  但如果源文件太多,一个一个编译时就会特别麻烦,于是人们想到,为什么不设计一种类似批处理的程序,来批处理编译源文件呢,于是就有了make工具,它是一个自动化编译工具,你可以使用一条命令实现完全编译。但是你需要编写一个规则文件,make依据它来批处理编译,这个文件就是makefile,所以编写makefile文件也是一个程序员所必备的技能。

  编写makefile实在是件复杂的事,于是人们又想,为什么不设计一个工具,读入所有源文件之后,自动生成makefile呢,于是就出现了cmake工具,它能够输出各平台对应的makefile或者project文件, 从而帮助程序员减轻负担。虽然不用编写makefile了,但是随之而来也就是编写cmakelist文件,它是cmake所依据的规则。

  流程图:

  

  抽象层次图:

   

posted on 2020-09-03 17:38  整鬼专家  阅读(1431)  评论(0编辑  收藏  举报