文件名中包含可变部分的生成文件的规则
rules for generated files with variable part in filename
有源文件:a.asn1
、b.asn1
首先我需要对它们进行预处理,为标识符添加前缀(不同文件的前缀不同)。
./prefixASN1.pl -file "foo.asn1" -prefix PREF-
这样做并将结果输出到PREF-foo.asn1
然后我需要从 PREF-foo.asn1 生成 C 解析器。
./snacc -mm PREF-foo.asn1
将创建 foo.c 和 foo.h(没有前缀的文件名)
如何实现与这个长 makefile 相同的行为:
a.c a.h: AAA-a.asn1
./snacc -mm $<
# serialize
a.h: a.c
b.c b.h: BBB-b.asn1
./snacc -mm $<
# serialize
b.h: b.c
AAA-a.asn1: a.asn1
./prefixASN1.pl -file $< -prefix AAA-
BBB-b.asn1: b.asn1
./prefixASN1.pl -file $< -prefix BBB-
用更短的东西,像这样:
# ??? set PREFIX=AAA for a
# ??? set PREFIX=BBB for b
%.c %.h: $(PREFIX)%.asn1
./snacc -mm $<
# serialize
???
$(PREFIX)%.asn1: %.asn1
./prefixASN1.pl -file $< -prefix $(PREFIX)
?
我正在使用 autotools 和 GNU make。
我决定在所有文件中使用相同的前缀更正确。
- 将源规范重命名为
%.unprefixed.asn1
- 修改了 perl 脚本以允许自定义输出文件名
- 定义了几个
ASN1_PREFIX_<stem>
变量:
_
ASN1_PREFIX_a = AAA-
ASN1_PREFIX_b = BBB-
- 添加的规则:
_
%.asn1: %.unprefixed.asn1`
$(PREFIXASN1) -file $< -prefix "$(ASN1_PREFIX_$*)" -outfile $@
%.c %.h: %.asn1
...
_
要将变量前缀传递给规则,我更喜欢 Computed Variable Names
而不是 Target-specific Variable Values
有源文件:a.asn1
、b.asn1
首先我需要对它们进行预处理,为标识符添加前缀(不同文件的前缀不同)。
./prefixASN1.pl -file "foo.asn1" -prefix PREF-
这样做并将结果输出到PREF-foo.asn1
然后我需要从 PREF-foo.asn1 生成 C 解析器。
./snacc -mm PREF-foo.asn1
将创建 foo.c 和 foo.h(没有前缀的文件名)
如何实现与这个长 makefile 相同的行为:
a.c a.h: AAA-a.asn1
./snacc -mm $<
# serialize
a.h: a.c
b.c b.h: BBB-b.asn1
./snacc -mm $<
# serialize
b.h: b.c
AAA-a.asn1: a.asn1
./prefixASN1.pl -file $< -prefix AAA-
BBB-b.asn1: b.asn1
./prefixASN1.pl -file $< -prefix BBB-
用更短的东西,像这样:
# ??? set PREFIX=AAA for a
# ??? set PREFIX=BBB for b
%.c %.h: $(PREFIX)%.asn1
./snacc -mm $<
# serialize
???
$(PREFIX)%.asn1: %.asn1
./prefixASN1.pl -file $< -prefix $(PREFIX)
?
我正在使用 autotools 和 GNU make。
我决定在所有文件中使用相同的前缀更正确。
- 将源规范重命名为
%.unprefixed.asn1
- 修改了 perl 脚本以允许自定义输出文件名
- 定义了几个
ASN1_PREFIX_<stem>
变量:
_
ASN1_PREFIX_a = AAA-
ASN1_PREFIX_b = BBB-
- 添加的规则:
_
%.asn1: %.unprefixed.asn1`
$(PREFIXASN1) -file $< -prefix "$(ASN1_PREFIX_$*)" -outfile $@
%.c %.h: %.asn1
...
_
要将变量前缀传递给规则,我更喜欢 Computed Variable Names
而不是 Target-specific Variable Values