Makefile 结合相似的规则

Makefile combine similar rules

我的 makefile 中有一些类似的规则:


include .env
include .env.local


var/make/.env: .env | var/make
    @sed 's/=/?=/' $< > $@

var/make/.env.local: .env.local | var/make
    @sed 's/=/?=/' $< > $@

var/make:
    mkdir $@

有没有办法制定通用规则?

var/make/.env*: name-matching-previous-.env* | var/make
    @sed 's/=/?=/' $< > $@

.env* 一次一个文件

是的,你可以写一个pattern rule:

var/make/.en%: .en% | var/make
    @sed 's/=/?=/' $< > $@

%匹配目标名称的可变部分。 (目标必须以 en% 而不是 env% 结尾,因为 % 不能匹配空字符串。)