搜索模式中包含计算变量的makefile
我正在处理一个makefile,我认为它应该在模式中使用计算变量。作为一个更大项目的一部分,我有三个不同的解析器,它们有很多重叠,并且以模块化的形式编写,以便能够更容易地维护公共组件。makefile的相关部分如下所示:搜索模式中包含计算变量的makefile,makefile,bison,flex-lexer,Makefile,Bison,Flex Lexer,我正在处理一个makefile,我认为它应该在模式中使用计算变量。作为一个更大项目的一部分,我有三个不同的解析器,它们有很多重叠,并且以模块化的形式编写,以便能够更容易地维护公共组件。makefile的相关部分如下所示: parser1object = firstobject parser2object = secondobject parser3object = thirdobject $(srcdir)/HIG%.y: \ $(srcdir)/HIG%.y.1 \ $(s
parser1object = firstobject
parser2object = secondobject
parser3object = thirdobject
$(srcdir)/HIG%.y: \
$(srcdir)/HIG%.y.1 \
$(srcdir)/common.tokens \
$(srcdir)/HIG%.y.2 \
$(srcdir)/common.syntax \
$(srcdir)/HIG%.y.3
sed 's/parserObjects/S((S*)object))/g' \
$(srcdir)/HIG$*.y.2 >$*temp.tmp
sed 's/parserObjects/S((S*)object))/g' \
$(srcdir)/common.syntax >common.syntax.tmp
cat $(srcdir)/HIG$*.y.1 \
$(srcdir)/common.tokens \
$*temp.tmp common.syntax.tmp \
$(srcdir)/HIG$*.y.3 >$(srcdir)/HIG$*.y
rm -f $*temp.tmp
rm -f common.syntax.tmp
也就是说,我想将一些文件连接到bison的几个语法文件中的一个。在公共语法文件中,我有一些对泛型对象的引用,需要在相应的解析器中将其替换为对象的名称。然而,因为它是在一个模式中,所以变量替换机制似乎不像我希望的那样工作。(对于parser1,我想将$($*)对象
更改为$(parser1object)
,最后更改为第一个对象
我怎样才能实现我想做的事
顺便说一句,由于模式替换,这似乎与{}不同,那么这个代码段不起作用了吗?问题是您使用的是
S((S*)对象))
而不是$($*)对象))
?而且,参数是错误的。像$*
这样的单字母变量不需要它们,但如果使用它们,它们必须在美元符号和变量之间,因此需要$($(*)对象)
而不是$($*)对象)
。但是我会写$($*对象)
。