曙光DAWNINGDAWNING科技计算未来一个简单的例子·先举一个例子:a.cb.c两个程序a.cb.cextern void p(char *);void p(char *str)mainO13printf("%sln",str);p("hello world");人1Makefilehello: a.c b.cgcc a.c b.c -o hello←注意这里是一个Tabz执行makegcc a.c b.c -o hello产生一个叫hello的可执行程序9/16/202611/34
9/16/2026 11/34 一个简单的例子 • 先举一个例子: a.c b.c两个程序 a.c extern void p(char *); main() { p("hello world"); } b.c void p(char *str) { printf("%s\n",str); } z Makefile hello: a.c b.c gcc a.c b.c -o hello 注意这里是一个Tab z 执行make gcc a.c b.c -o hello 产生一个叫hello的可执行程序
曙光DAWNINGDAWNING科技计矿未米书写makefile文件Makefile时由规则来组成的.每一条规则都有三部分组成:目标(object),依赖(dependency)和命令(command).在上面的例子中,Makefile只有一条规则,其目标为hello,期依赖为a.cb.c其命令为gcca.cb.c-ohello依赖可以是另一条规则的目标,也可以是文件.每一条规则被这样处理.如标是一个文件是:当它的依赖是文件时如果依赖的时间比自标要新,则运行规则所包含的命令来更新目标;如果依赖是另一个目标则用同样的方法先来处理这个目标.如目标不是一个存在的文件时,则一定执行12/349/16/2026
9/16/2026 12/34 书写makefile文件 • Makefile时由规则来组成的,每一条规则都有三部分组成:目 标(object),依赖(dependency)和命令(command).在上面的例 子中, Makefile只有一条规则,其目标为hello,期依赖为a.c b.c, 其命令为gcc a.c b.c -o hello. • 依赖可以是另一条规则的目标,也可以是文件.每一条规则 被这样处理.如目标是一个文件是:当它的依赖是文件时,如 果依赖的时间比目标要新, 则运行规则所包含的命令来更 新目标; 如果依赖是另一个目标则用同样的方法先来处理 这个目标.如目标不是一个存在的文件时,则一定执行