很早之前就想试着写一个Makefile,一直没写,上次DH问我怎么写,刚好自己想写一个,于是就goolge了一下。
Makefile的编写规则
Makefile文件中,注释以"#"开始
Makefile文件中最重要的是描述文件的依赖关系的说明,其一般的格式为:
target: components
TAB rule
第一行表示的是依赖关系,第二行是规则。
例如上面那个Makefile文件的第二行:main: main.o mytool1.o mytool2.o,表示我们的目标(target)main的依赖对象(components)是main.o mytool1.o mytool2.o
当依赖的对象在目标修改后修改的话,就要去执行规则行所指定的命令。
例如上面那个Makefile文件的第三行:gcc -o main main.o mytool1.o mytool2.o
注意:规则行中的TAB表示那里是一个TAB 键。
于是有问题了,第一个问题:Makefile的文件随便命名是可以的么,试着写了一个其它的名字,发现不行,但是貌似不区分大小写,所以写makefile也是可以的,但是一般还是按照规则来写,第一个M大写。第二个问题:如果存在多个Makefile呢?根据第一个,肯定是只有规范的命名的被识别。第三个问题:如果我当前文件下有多个C文件需要编译呢?也就是要生成两个输出文件怎么办?这个还真不懂,于是问了一下金师兄就解决了,写一个空的依赖文件就OK了。比如说我要编译当前文件夹下的Cilent.c和Server.c,这样我在第一行加个
target:Client Server
(空行,没有规则)
Client:Client.c
(TAP)gcc -Wall -o Client Client.c
Server:Server.c
(TAP)gcc -Wall -o Server Server.c