《makefile指令详解 (2).pptx》由会员分享,可在线阅读,更多相关《makefile指令详解 (2).pptx(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、makefile 简介Makefile方便中大型程序项目的管理(不一定是基于C语言的项目)在Linux下通过make命令调用makefile脚本,根据其定义执行shell命令行常用规则如果这个工程没有编译过,那么我们的所有c文件都要编译并被链接。如果这个工程的某几个c文件被修改,那么我们只编译被修改的c文件,并链接目标程序。如果这个工程的头文件被改变了,那么我们需要编译引用了这几个头文件的c文件,并链接目标程序。Makefile格式target.:prerequisites.#注释command.target:可以为可执行文件,object文件,或标签(label)prerequisites:
2、生成该target需要的文件/目标生成该target需要执行的shell命令Makefile exampleedit: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.omake工作原理1.make会在当前目录下找名字
3、叫“Makefile”或“makefile”的文件。2.如果找到,它会找文件中的第一个目标文件(target),在上面的例子中,他会找到“edit”这个文件,并把这个文件作为最终的目标文件。3.如果edit文件不存在,或是edit所依赖的后面的.o 文件的文件修改时间要比edit这个文件新,那么,他就会执行后面所定义的命令来生成edit这个文件。make工作原理如果edit文件不存在,或是edit所依赖的后面的.o 文件的文件修改时间要比edit这个文件新,那么,他就会执行后面所定义的命令来生成edit这个文件。如果edit依赖的.o文件不存在,则找到后面对应的定义规则来生成该.o文件。最后再
4、用.o文件生成edit执行文件变量的使用edit:main.o kbd.o command.o cc-o edit main.o kbd.o command.o clean:rm edit main.o kbd.o command.oobjects=main.o kbd.o command.o edit:$(objects)cc-o edit$(objects)clean:rm edit$(objects)Make自动推导只要make看到一个whatever.o文件,它就会自动的把相应的whatever.c文件加在依赖关系中。并且也会把执行命令cc c whatever.c推导出来。Make自
5、动推导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 main.o:defs.hkbd.o:defs.h command.h command.o:defs.h command.h.PHONY:clean clean:rm edit$(objects)文件引用include;假如你有这样几个Makefile:a.mk、b.mk、c.mk,还有一个文件叫foo.make,以及一个变量$(bar),其包含了 e.mk和f.mk,include foo.make*.mk$(bar)=nclude foo.make a.mk b.mk c.mk e.mk f.mk