makefile指令详解

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Makefile格式
target ... : prerequisites ... #注释
command ... target:可以为可执行文件,object文件,或标签 (label) prerequisites: 生成该target需要的文件/目标 生成该target需要执行的shell命令
Makefile example
include foo.make *.mk $(bar)= nclude foo.make a.mk b.mk c.mk e.mk f.mk
edit : main.o kbd.o command.o cc -o edit main.o kbd.o command.o main.o : main.c defs.h cc -c main.c kbd.o : kbd.c defs.h command.h cc -c kbd.c command.o : command.c defs.h command.h cc -c command.c clean : rm edit main.o kbd.o command.o
main.o : defs.h kbd.o : defs.h command.h command.o : defs.h command.h .PHONY : clean clean : rm edit $(objects)
文件引用
• include <filename>; • 假如你有这样几个Makefile:a.mk、b.mk、 c.mk,还有一个文件叫foo.make,以及一个 变量$(bar),源自文库包含了 e.mk和f.mk,
makefile 简介
Makefile
• 方便中大型程序项目的管理(不一定是基于C 语言的项目) • 在Linux下通过make命令调用makefile脚本,根 据其定义执行shell命令行 • 常用规则
– 如果这个工程没有编译过,那么我们的所有c文件 都要编译并被链接。 – 如果这个工程的某几个c文件被修改,那么我们只 编译被修改的c文件,并链接目标程序。 – 如果这个工程的头文件被改变了,那么我们需要编 译引用了这几个头文件的c文件,并链接目标程序。
变量的使用
edit : main.o kbd.o command.o cc -o edit main.o kbd.o command.o … clean : rm edit main.o kbd.o command.o
objects = main.o kbd.o command.o edit : $(objects) cc -o edit $(objects) … clean: rm edit $(objects)
make工作原理
1. make会在当前目录下找名字叫“Makefile” 或“makefile”的文件。 2. 如果找到,它会找文件中的第一个目标文 件(target),在上面的例子中,他会找到 “edit”这个文件,并把这个文件作为最终 的目标文件。 3. 如果edit文件不存在,或是edit所依赖的后 面的 .o 文件的文件修改时间要比edit这个 文件新,那么,他就会执行后面所定义的 命令来生成edit这个文件。
make工作原理
• 如果edit文件不存在,或是edit所依赖的后 面的 .o 文件的文件修改时间要比edit这个文 件新,那么,他就会执行后面所定义的命 令来生成edit这个文件。 • 如果edit依赖的.o文件不存在,则找到后面 对应的定义规则来生成该.o文件。最后再 用.o文件生成edit执行文件
Make自动推导
• 只要make看到一个[whatever.o]文件,它就 会自动的把相应的[whatever.c]文件加在依 赖关系中。并且也会把执行命令
cc –c whatever.c推导出来。
Make自动推导
main.o : main.c defs.h cc -c main.c kbd.o : kbd.c defs.h command.h cc -c kbd.c command.o : command.c defs.h command.h cc -c command.c
相关文档
最新文档