makefile 语法“
”
Makefile中代码格式:
目标对象:依赖对象
要生成目标对象所执行的命令
makefile 就是顺序执行的一层一层的关系,你可以理解为函数一层一层的调用关系,先指定编译输出结果,在指定这个结果依赖的文件,在去依赖的文件中得到一个结果,之后回到最终的结果里面,就是相当函数的一层层的调用关系,最后得到一个想要的产物,注意互相依赖的关系
Makefile文件中的代码分析为:
第1行:最终要生成的目标文件Calculate文件依赖于main.o文件和calculate.o文件
第2行:gcc方式编译代码,目标文件是Calculate,源文件是main.o和calculate.o
第3行:生成Calculate文件所依赖的文件main.o又依赖于main.c
第4行:gcc方式编译生成目标文件main.o
第5行:生成Calculate文件所依赖的文件calculate.o又依赖于calculate.c
第6行:gcc方式编译生成目标文件calculate.o
第7行:.PHONY后面的clean表示的是一个伪造的目标,并不是真正目标文件的依赖
第8行:目标对象clean不依赖于任何依赖对象,因为clean是一个伪目标
第9行:生成clean要执行的代码,即调用make clean命令时,执行代码rm –rf *.o Calculate
===============makefile debug 小技巧
$(warning "test")
$(error "test")
$(warning TEXT...)
Ø 函数功能:函数“warning”类似于函数“error”,区别在于它不会导致致命错误(make不退出),而只是提示“TEXT…”,make的执行过程继续。
Ø 返回值:空
Ø 函数说明:用法和“error”类似,展开过程相同
$(error TEXT...)
Ø 函数功能:产生致命错误,并提示“TEXT…”信息给用户,并退出make的执行。需要说明的是:“error”函数是在函数展开式(函数被调用时)才提示信息并结束make进程。因此如果函数出现在命令中或者一个递归的变量定义中时,在读取Makefile时不会出现错误。而只有包含“error”函数引用的命令被执行,或者定义中引用此函数的递归变量被展开时,才会提示致命信息“TEXT…”同时退出make。
Ø 返回值:空
Ø 函数说明:“error”函数一般不出现在直接展开式的变量定义中,否则在make读取Makefile时将会提示致命错误。
接:https://blog.csdn.net/liaoshengshi/article/details/40453997