假设我有以下内容:
myfile.xyz: myfile.abc
mycommand
.SUFFIXES:
.SUFFIXES: .xyz .abc
.abc.xyz:
flip -e abc "$<" > "logs/$*.log"
现在假设我希望mycommand
成为自定义规则(因为它当前),但也后续(或之前)运行后缀规则。也就是说,我不希望我的自定义规则替换后缀规则。
答案 0 :(得分:2)
在gnu make中你不想做什么。有双冒号规则允许一个目标的多个配方,但它们不适用于后缀规则或模式规则。有关详细信息,请参阅the make manual about double colon rules。
这是一种解决方法:
.SUFFIXES: # Delete the default suffixes
.SUFFIXES: .xyz .abc # Define our suffix list
.abc.xyz:
flip -e abc "$<" > "logs/$*.log"
if [ myfile.abc = "$<" ]; then mycommand; fi
这是使用模式规则而不是后缀规则的相同makefile:
%.xyz: %.abc
flip -e abc "$<" > "logs/$*.log"
if [ myfile.abc = "$<" ]; then mycommand; fi
有关详细信息,请参阅make manual about pattern rules和old-fashioned suffix rules。