本文共 1516 字,大约阅读时间需要 5 分钟。
1、 目的:解决大型程序编译多个源文件带来的问题,可以大大提高开发效率。
2、 Makefile文件主要告诉应用程序应该如何构造,一般与其他源文件放在同一目录。一个大的工程,可以用多个不同的makefile文件分别管理项目不同部分。 3、 Makefile语法:由一组依赖关系和规则组成 1) 每个依赖关系由一个目标和一组该目标所依赖的源文件组成。在makefile文件中,依赖的写法是:目标名称:(空格或tab)文件列表, myapp: main.o 2.o (myapp为目标,依赖main.o 2.o) 这些依赖关系形成一个层次结构,显示了源文件之间的关系。 2) 规则描述了通过这些依赖文件创建目标,它定义了目标的创建方式。 例如 myapp: main.o 2.o (依赖关系) gcc -o myapp main.o 2.o (规则) 4、 Makefile命令参数 1)-k:让makefile在发现错误后仍然继续执行,而不会停下来。可以利用此参数一次发现所有编译错误; 2)-n:让makefile输出将要执行的操作步骤,而不是真正去执行; 3)-f :告诉make命令将哪个文件作为makefile文件,默认会查找当前目录下的makefile和Makefile文件(makefile优先查找) 5、一个简单的makefile文件 在同一目录下创建: Makefile:helloapp: hello.o (helloapp的依赖关系) gcc -o helloapp hello.o (生成hello.o的规则)hello.o: hello.c gcc -c hello.c
hello.c:
#includeint main(){ printf("this is a Makefile test!\n"); return 0;}
执行过程:
# makegcc -c hello.cgcc -o helloapp hello.o# ./helloappthis is a Makefile test!
6、 Makefile的注释:注释以#号开头,一直延续到这一行的结束。
7、 Makefile的宏:可以很好的设置环境变量,移植性好。 定义宏:MACRONAME=value 使用宏:$(MACRONAME) 默认宏:8、 Makefile的clean和install
1) clean:用于删除不需要的目标文件 rm命令以-开头,减号的含义是让make命令忽略rm命令的执行结果,即即使目标文件不存在,也不会因为rm命令执行失败而返回错误。 格式: clean: -rm hello.o 2)install:用于将编译成功的应用程序安装 用于制作install目标的规则由几个shell脚本命令组成。由于make命令在执行规则时会调用一个shell,并且会针对每个规则使用一个新的shell,所以必须在上面每行代码结尾加上反斜杠\,让所有shell脚本命令处于逻辑上同一行;并且命令以@开头,表示make在执行这些规则之前不会在标准输出上显示命令本身。 install: chmod u+x helloapp ./helloapp上面将生成的可执行文件,直接执行。