makefile在搜索模式中包含计算变量

时间:2015-05-05 16:18:14

标签: makefile bison flex-lexer

我正在研究一个makefile,我认为应该在模式中使用计算变量。作为一个大项目的一部分,我有三个不同的解析器,它们有很多重叠,并以模块化形式编写,以便能够更容易地维护公共组件。 makefile的相关部分是:

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

也就是说,我想将一些文件连接成一个用于野牛的几个语法文件之一。在通用语法文件中,我有一些对通用对象的引用,需要用相应解析器中对象的名称替换。但是,因为它位于模式内部,所以变量替换机制似乎不像我希望的那样工作。 (对于parser1,我想将$($*)object更改为$(parser1object),最后更改为firstobject

我怎样才能达到我想做的目的?

顺便说一句,由于模式替换,这似乎与{Makefile and computed variable names}

不同

0 个答案:

没有答案