参考资料

找一份好的资料,以下文档比较权威,可以借助翻译软件。

官方文档

参考文档

makefile概念

make 指令读取makefile/Makefile 文件规则,指定编译源代码生成目标文件。
在windows IDE 下编程,只需要将源文件加到编译列表即可,也相当方便。
Linux 下组织代码编译相对操作复杂一点,由makefile 文件指定需要编译的文件。
相比之下,windows 下的IDE对程序员更友好,但Linux 的makefile 可以使用程序员更了解编译过程,针对复杂工程也是有优势的,比如Linux 源码编译,兼容多种芯片。

makefile 执行

make 默认找makefile 或者Makefile
make -f rules.mk 指定规则文件为rules.mk
makefile 调试方法: make -n 只输出不执行 , make -v -p 详细信息

如何写makefile

<target> : <prerequisites> 
[tab]  <commands>
  • 显式规则。显式规则说明了如何生成一个或多个目标文件。这是由Makefile的书写者明显指出要生成的文件、文件的依赖文件和生成的命令。

  • 隐晦规则。由于我们的make有自动推导的功能,所以隐晦的规则可以让我们比较简略地书写Makefile,这是由make所支持的。

  • 变量的定义。相当于C 语言里的宏,基本都是字符串,make 执行时将这些变量扩展到相应引用的位置。

  • 文件指示。其包括了三个部分,一个是在一个Makefile中引用另一个Makefile,就像C语言中的include一样;另一个是指根据某些情况指定Makefile中的有效部分,就像C语言中的预编译#if一样;还有就是定义一个多行的命令。有关这一部分的内容,我会在后续的部分中讲述。

  • 注释,Makefile中只有行注释 #

扁平方案

了解更多

复杂方案

了解更多