如果我有一个引用的 Makefile myprog.c
,如果我没有为 指定规则myprog.c
,make 将自动执行类似$(CC) myprog.c
.
我可以重新指定默认行为并添加新的默认行为(例如,对于以 结尾的文件myextension
)吗?
对于 C,特定规则可能如下所示:
%.o : %.c
rules
尝试将其应用于您的扩展程序。
COMPILE.c
隐式规则的配方是通过,LINK.c
等变量在内部定义的。
来自GNU Make 手册的隐式规则目录:
make
遵循编译.x源文件的规则使用变量的约定COMPILE.x
。同样,从.x文件生成可执行文件的规则使用LINK.x
; 并且预处理.x文件的规则使用PREPROCESS.x
.
上面的链接还包含一些预定义的隐式配方。
GNU make 有一堆内置的隐含规则,它决定它知道如何从你的myprog.c
. 您可以为您喜欢的任何内容添加自己的隐式规则。例如,下面的隐含规则告诉 GNU make 它如何.out
从文件中生成.myextension
文件:
%.out: %.myextension
@echo Building $@ from $<
@# do whatever you need here...
将其放入您的 Makefile 中,您将能够运行gmake foo.out
, orgmake bar.out
或其他任何内容,只要您有匹配foo.myextension
的 等,而无需为每个输出指定显式规则。