GNU make(一)make概述
近期的工作中,工程文件较为复杂,部分采用make进行构建,所以学习makefile的语法和使用方式。网上资料比较错综复杂,看过之后很难有一个系统的认识,所以最终选择对GNU make 手册进行学习总结。
前言
手册总共十六章,四个附录,本文按手册原文顺序进行整理。
一、make是什么?
make分为很多种类,如:
- gmake:GNU make,也是Linux/Unix系统下通用的make。
- cmake:CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。
- nmake: Windows系统下自带的make,一般在$(VCInstallDir)/bin目录下面。
这里讨论的均为GNU make。
概括来讲,make是一个项目自动构建工具,当你的项目中的文件更改时,使用make工具可以根据文件最后更改时间以及makefile中定义的内容,重新对项目进行构建。在运行make时也可以提供命令行参数来控制应该重新编译哪些文件
二、makefile是什么?
makefile可以理解为描述make如何工作的文件,makefile告诉make怎样去编译和链接一个程序。此外,还可以通过一些定义去实现其它的功能(e.g. clean)使用make工具一般需要在工程目录中新建makefile文件,make默认识别的makefile文件名为makefile
、Makefile
、GNUmakefile