如果我有一个引用的 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的 等,而无需为每个输出指定显式规则。