想要书写一个完整的 Makefile文件,须要了解 Makefile 的相关的书写规则。咱们已经知道了 Makefile 描述的是文件编译的相关规则,它的规则主要是两个部分组成,分别是依赖的关系和执行的命令,其结构以下所示:程序员
targets : prerequisitesshell
command编程
或者是学习
targets : prerequisites; commandui
commandspa
相关说明以下:3d
✿ S9targets:规则的目标,能够是 Object File(通常称它为中间文件),也能够是可执行文件,还能够是一个标签;code
✿ prerequisites:是咱们的依赖文件,要生成 targets 须要的文件或者是目标。能够是多个,也能够是没有;blog
✿ command:make 须要执行的命令(任意的 shell 命令)。能够有多条命令,每一条命令占一行。ip
注意:咱们的目标和依赖文件之间要使用冒号分隔开,命令的开始必定要使用Tab键。
经过下面的例子来具体使用一下 Makefile 的规则,Makefile文件中添代码以下:
test:test.c
gcc -o test test.c
上述代码实现的功能就是编译 test.c 文件,经过这个实例能够详细的说明 Makefile 的具体的使用。其中 test 是的目标文件,也是咱们的最终生成的可执行文件。
依赖文件就是 test.c 源文件,重建目标文件须要执行的操做是gcc -o test test.c。这就是 Makefile 的基本的语法规则的使用。
使用 Makefile 的方式:首先须要编写好 Makefile 文件,而后在 shell 中执行 make 命令,程序就会自动执行,获得最终的目标文件。
经过上面的例子咱们能够了解到,Makefile 的规则很简单,但这并非 Makefile 的所有,这个仅仅是它的冰山一角。
仅仅靠一个规则知足不了咱们对于大的工程项目的编译。甚至几个文件的编译都会出现问题,因此要学习的东西还有不少。
==========================
简单的归纳一下Makefile 中的内容,它主要包含有五个部分,分别是:
1) 显式规则
显式规则说明了,如何生成一个或多的的目标文件。这是由 Makefile 的书写者明显指出,要生成的文件,文件的依赖文件,生成的命令。
2) 隐晦规则
因为咱们的 make 命名有自动推导的功能,因此隐晦的规则可让咱们比较粗糙地简略地书写 Makefile,这是由 make 命令所支持的。
3) 变量的定义
在 Makefile 中咱们要定义一系列的变量,变量通常都是字符串,这个有点像C语言中的宏,当 Makefile 被执行时,其中的变量都会被扩展到相应的引用位置上。
4) 文件指示
其包括了三个部分,一个是在一个 Makefile 中引用另外一个 Makefile,就像C语言中的 include 同样;另外一个是指根据某些状况指定 Makefile 中的有效部分,就像C语言中的预编译 #if 同样;还有就是定义一个多行的命令。有关这一部分的内容,我会在后续的部分中讲述。
5) 注释
Makefile 中只有行注释,和 UNIX 的 Shell 脚本同样,其注释是用“#”字符,这个就像 C/C++ 中的“//”同样。若是你要在你的 Makefile 中使用“#”字符,能够用反斜框进行转义,如:“\#”。
无论你是转行也好,初学也罢,进阶也可,若是你想学编程,进阶程序员~
【值得关注】个人 编程学习交流俱乐部 !【点击进入】
全栈程序员正在等你加入~