make学习
make是一种编译工具,它可以用来编译包含多个源文件的大工程。当工程中某一个文件被修改后,用make可以实现单独编译有变动的源文件,从而避免重新编译整个工程。make命令的执行需要通过编写makefile脚本来实现。
- Makefile的基本规则
目标文件:依赖文件
响应命令
eg:
1 myapp:hello.c 2
3 gcc hello.c -o hello //行首按TAB键 4 5 .PHONY:clean 6 7 clean: 8 9 rm *.o myapp
程序第一行表示myapp最终目标文件,即最后生成的目标文件;hello.c为依赖文件,表示生成myapp所需要的源文件,
gcc hello.c -o hello为响应命令,
.PHONY用来显示指定伪目标文件clean,
伪目标文件不代表一个真正的文件名,在执行make时,可以通过指定一个伪目标文件来执行其所在的规则中定义的命令。
一般在makefile文件最后都要有个伪目标clean,用来清理工程编译的文件。
×makefile文件保存命名为Makefile
2. make命令的执行
make命令会在当前的工作目录下搜索Makefile文件,并读取执行makefile文件或Makefile文件,若是在当前工作目录下没有找到这两个文件,make将不读取任何文件。
直接敲入make命令,即可执行文件的编译,若是makefile文件有修改,修改后执行make,将提示myapp is up to date.表示myapp有更新。
3. 多文件makefile文件的编写
- 第一步编写可执行文件生成规则
- 第二步编写各目标文件生成规则
- 编写伪目标规则
myapp:main.o fun1.o fun2.o //第一个规则目标myapp就是最终目标 gcc -o myapp main.o fun1.o fun2.o //将后3个目标文件生成可执行文件Myapp main.o:main.c fun1.h fun2.h gcc -c main.c //生成目标文件Main.o fun1.o:main.c fun1.h fun2.h //生成fun1.o gcc -c fun1.c fun2.o:main.c fun1.h fun2.h gcc -c fun2.c .PHONY:clean //伪目标规则 clean: rm *.o myapp