继续学习makefile,希望尽快掌握makefile好在面试中更好的掌握方向!加qq1126137994一起学习更多技术!!
1、回顾
makefile的意义:
- makefile用于定义源文件之间的依赖关系
 - makefile说明如何编译各个源文件并生成可执行文件
 
依赖的定义: 
  
 ‘\t’ 代表的是tab键!
makefile中各元素的意义: 
 -targets:
- 通常是需要生成的目标文件名
 - make所需执行的命令名称
 
-prerequisities:
- 当前目标所依赖的其他目标或依赖
 
-command:
- 完成目标所需执行的命令
 
注意事项:
- targets可以是多个目标,使用空格对目标名进行分离
 - prerequisities可以是多个依赖,使用空格对多个依赖进行分隔
 - 每一个命令行,都必须以一个【tab键】字符开始,【tab】字符告诉make这一行是命令行
 - 续行符【\】,可以将内容分开写到下一行,提高可读性
 
一个makefile的依赖示例: 
 
依赖规则:
- 当目标对应的文件不存在,执行对应的命令
 - 当依赖在时间上比目标更新,执行相应的命令(意思就是依赖文件有改动时,执行相应命令)
 - 当依赖关系连续发生时,对比依赖链上的每一个目标
 
小技巧: 
 makefile中可以在命令前加上【@】符,作用为命令无回显!
2、makefile简单示例
下面是一个简单的makefile文件:
all : test@echo "make all"test :@echo "make test"
 
输入:make命令,显示如下: 
 make test 
 make all
3、make编译简单示例
小技巧: 
 工程开发中,可以将最终可执行的目标文件名 和 all 同时作为makefile中的第一条规则的目标 
hello.out all : main.o func.ogcc -o hello.out main.o func.o 
下面给出一个: 
 makefile文件:
hello.out all : func.o main.ogcc -o hello.out func.o main.ofunc.o : func.cgcc -o func.o -c func.cmain.o : main.cgcc -o main.o -c main.c
 
func.c文件:
#include "stdio.h"void foo()
{printf("void foo() : hello makefile\n");
}
 
main.c文件:
extern void foo();int main()
{foo();return 0;
}   
 
在Linux下输入make命令执行,结果如下: 
 gcc -o main.o -c main.c 
 gcc -o hello.out func.o main.o
运行编译所得的可执行文件:hello.out 
 输出结果为: 
 void foo() : hello makefile
以上程序比较简单,就不分析了,仅供学习复习使用!!!
4、总结
- makefile用于定义源文件之间的依赖关系
 - makefile说明如何编译各个源文件并生成可执行文件
 - makefile中的目标之间存在连续依赖的关系
 - 依赖存在并且命令执行成功是目标完成的充要条件
 
想一起探讨以及获得各种学习资源加我(有我博客中写的代码的原稿): 
 qq:1126137994 
 微信:liu1126137994 
 可以共同交流关于嵌入式,操作系统,C++语言,C语言,数据结构等技术问题。
本学习记录完全来源于狄泰软件学院的相关课程,可以加我q:1126137994或者Q群:199546072 ,给你推荐更多学习课程。