GNU make:后缀规则与自定义规则相结合

时间:2013-08-27 06:14:58

标签: makefile gnu-make

假设我有以下内容:

myfile.xyz: myfile.abc
        mycommand

.SUFFIXES:
.SUFFIXES: .xyz .abc

.abc.xyz:
        flip -e abc "$<" > "logs/$*.log"

现在假设我希望mycommand成为自定义规则(因为它当前),但后续(或之前)运行后缀规则。也就是说,我不希望我的自定义规则替换后缀规则。

1 个答案:

答案 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 rulesold-fashioned suffix rules