有源文件: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(没有前缀的文件名)
如何实现与此长文件相同的行为:
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。
答案 0 :(得分:0)
我认为在所有文件中使用相同的前缀更为正确。
%.unprefixed.asn1
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
的规则