Makefile中扩展正则表达式列表的分隔符

Separator character for a list of extended regular expressions in a Makefile

本文关键字:分隔符 列表 正则表达式 扩展 Makefile      更新时间:2023-10-16

我需要将一系列正则表达式应用于输入流。我写了一个使用@(foreach ...)的Makefile为了在字符串中创建CCD_ 2命令的序列,然后成为配方的一部分,即:

output: $(files)
command | $(dynamicSed) > $@

例如:为了使几个编译器中的每个编译器的选项看起来像另一个编译器的选项,我可能有一个Makefile变量,比如:

define compilerConfig
cca|ccb:-d@-D|-H@-I
ccc:-d@-D
endef

在Makefile中,我根据选择的编译器生成$(dynamicSed)。我选择@作为sed分隔符因为在实际应用中有许多正则表达式涉及CCD_ 6。我选择|来分隔正则表达式因为我目前没有任何涉及替代方案的正则表达式,如果我这样做了,它们总是可以写成两个正则表达式。有更好的选择吗?也就是说,是否有一个字符很少出现,并且不被扩展的POSIX正则表达式使用?

不幸的是,对于这个特定的应用程序,我不能依赖utf8。但如果可以的话,utf8有一个可见的字符吗定义为仅用作分隔符?

您可以更改$(dynamic_sed)的搜索/替换组件,以便在任何冲突的分隔符前面添加。然后,您可以使用任何delimeter字符,这将无关紧要。注意:这将在生成$(dynamic_sed)时完成