make命令工具与Makefile

来源:互联网 发布:eve手机辅助软件 编辑:程序博客网 时间:2024/06/05 16:15

一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,要一个一个用简单命令去实现编译链接这是极为繁琐低效的。Makefile实现了自动化编译链接。Makefile定义了一系列规则来指定,哪些文件需要先编译,哪些文件需要重新编译,甚至进行更复杂的功能操作。Makefile已经成为一种在工程方面的编译方法,集成开发环境在底层也是使用Makefile的。写好Makefile后,只需一个make命令即可使整个工程进行自动编译。

掌握make,需要掌握:
1. make的退出码;
在执行完成后会有提示,0表示成功执行、1表示运行中出现错误、2表示用-q参数检查目标是否需要更新时出错。
2. make的全部参数;
make -h即可查看。
3. make的隐含规则;
make会使用到一些隐含规则,即哪怕Makefile中没有书写这样的规则,make也会根据隐含规则来实现一定的功能。隐含规则会使用一些系统变量,可以改变这些系统变量的值来定制隐含规则运行时的参数。CFLAGS、CXXFLAGS、LDFLAGS、LIBS就是最常用的这类变量。详细介绍可以看:《Makefile中的CFLAGS、CXXFLAGS、LDFLAGS、LIBS》

Makefile中的一些参数可以通过make 时带上参数来强制重置。如交叉编译时可以用:

make ARCH=arm  CROSS_COMPILE=arm-none-linux-gnueabi-

覆盖掉项目Makefile中对ARCH、CROSS_COMPILE的指定。

补充一句,make强制带入的变量优先级最高,其次是Makefile中的变量,最后才是系统的环境变量。