目录
1.Makefile规则
2.隐式规则
3.模式规则
Linux下编写C使用的GDB调试器
Ubuntu中关于C介绍以及编写C程序
Ubuntu换源教程
Linux中的Make工程管理
Linux中关于使用make管理工具的实例
提示:看篇博文之前首先对上面给出的链接中的内容有一定的了解。
1.Makefile规则
Makefile文件中的显式规则关系:$(CC),$(CFLAGS) -c $< -o $@;但是Makefile为了简化编写,make还定义了隐式规则和模式规则。
2.隐式规则
GNU Make包含有一些内置的或者隐含的规则,这写规则定义了如何从不同的依赖文件建立特定类型的目标。
隐式规则能够告诉make怎么样使用传统的技术完成任务,这样用户在使用它们的话就不必详细指定编译器的具体细节,而只需要把目标文件列出即可。
make会自动搜索隐式规则来确定如何生成目标文件。
例子来源:Linux中的Make工程管理
现在对上面定义的显式规则进行改进为隐式规则。
对比:对比之前的显式规则的写法,简洁很多,可是理解起来也相对的较难。
从上面的例子可以看到,make隐式规则指出,所有“.o”文件都可以自动由“.c”文件使用命令
$(CC) $(CPPFLAGS) $(CFLAGS) -c file.c -o file.o生成。这样的话main.o,dec.o,mul.o,div.o,add.o就会分别调用这个规则生成(这些规则在大型的项目中最能体现出优势)。
3.模式规则
模式规则用来定义相同处理规则的多个文件,不同于隐式规则,隐式规则仅仅能够用make默认的变量来进行操作,而模式规则还能引入用户自定义变量,为多个文件建立相同的规则,从而简化Makefile的编写。
比如:将任意一个.c文件转换为.o文件:
%.c:%.o
$(CC) $(CCFLAGS) $(CPPFLAGS) -c -o $@ $<
提示:模式规则的格式类似于普通规则,这个规则中的相关文件前必须用“%”标明。