【发布时间】:2025-12-19 15:10:15
【问题描述】:
有源文件: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)
?
我正在使用自动工具和 GNU make。
【问题讨论】: