有人最近在Makefile中提到了目标.c.o
以实现交叉兼容性,但我无法理解其目的。任何人都可以澄清吗?
答案 0 :(得分:33)
这是old-fashioned suffix rule。更新的方法是使用pattern rule:
%.o : %.c
答案 1 :(得分:2)
这是一个将.c
文件(即C模块)转换为.o
目标文件的固定规则。它存在,因此您不必自己编写此规则,并通过Make变量参数化,例如CC
(要使用的C编译器),CFLAGS
(编译器标志)等。
因此,如果您使用此隐式规则来编译C模块并且不修改任何Make变量,那么构建代码的人可以在命令行上指定编译器和标志,而无需编辑Makefile。