Subject: Re: [Boost-build] How to use generators to CPP and LIB
From: Vladimir Prus (ghost_at_[hidden])
Date: 2009-01-30 12:21:57
On Friday 30 January 2009 20:19:25 Alexander Sack wrote:
> On Fri, Jan 30, 2009 at 11:10 AM, Vladimir Prus <ghost_at_[hidden]> wrote:
> > On Thursday 29 January 2009 15:09:33 Duncan Rance wrote:
> >> Hi there,
> >> I am trying to do something with generators but I'm stuck. I'd really
> >> appreciate some help.
> >> What I've got so far is, in a module called resources.jam, something
> >> like this:
> >> type.register RESTXT : txt ;
> >> generators.register-standard resources.genenumh : RESTXT : H ;
> >> generators.register-standard resources.pkgdata : RESTXT : LIB ;
> >> What I need to do is use a .txt file to produce a header file and a
> >> static library. The header file is to be used in a few places,
> >> including the code used to create the LIB. But there's more to go in
> >> the LIB than just the header. If you're interested, I'm using ICU's
> >> resource bundling tools
> >> (http://www.icu-project.org/userguide/ResourceManagement.html)
> >> As you can probably imagine, there is an ambiguity between
> >> builtin.lib-generator and resources.pkgdata.
> >> How can I do this in boost build?
> > I don't think there's a way to resolve this ambiguity without introducing
> > custom generator class.
> > I suggest you resolve the ambiguity using generators.override, in
> > favour of your new generator. Your generator, however, should
> > check if the source type is RESTXT. If so, it should build whatever you
> > need. If the source type is different, it should call generators.construct
> > for LIB target again, so that builtin generator does his job.
> > I also recommend using some more specific extension than .txt
> After reading Volodya's email, I just realized is you are trying to
> register one generator for two types! Well one work around is the
> name the same file with two different extensions which would allow two
> different simpler generators no?
The generator selection process does not use the types of the *sources*.
I think one other approach is to create new type RESOURCE-LIB, derived
from LIB, and register a generator creating RESOURCE-LIB. Then, given:
resource-lib a : a.txt ;
there will be no ambiguity.
Boost-Build list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk