make定义了一种语言,可用来描述源文件、中间文件以及可执行文件之间的关系。它还提供了一些功能,可用来管理各种
候选配置、实现可重用程序库的细节以及让用户自定义宏将过程参数化。简言之,make常被视为开发过程的核心,因为它
为应用程序的组件以及这些组件的搭配方式提供了一个可依循的准则。
make的主要价值在于它由能力完成编译应用程序时所需要的一系列复杂步骤,以及当有可能缩短“编辑-编译-调试”周期时对
这些步骤进行优化的动作。
1.工作目标和必要条件
基本上,makefile文件包含了一组用来编译应用程序的规则。make所看到的第一项规则,会被作为默认规则使用。一项
规则可分为三部分:工作目标(target)、它的必要条件(prerequisite)以及所要执行的命令(command):
target:prereq1 prereq2
commands
工作目标是一个必须建造的文件或进行的事情:必要条件或已存对象是工作目标得以被成功创建之前,必须实现存在的那些
文件;而所要执行的命令则是必要条件成立时将会创建工作目标的那些shell命令。
有如下文件:
main.c:
#include <stdio.h>
#include "myutil.h"
int main(void) {
myprint();
return 0;
}
myutil.h:
void myprint();
myutil.c&