Boost logo

Boost-Build :

Subject: Re: [Boost-build] target naming
From: Stefan Seefeld (stefan_at_[hidden])
Date: 2017-01-20 10:42:32

Hi Aaron,

thanks for the quick reply.

On 20.01.2017 10:31, aaron_at_[hidden] wrote:
> The "l" target is a metatarget and only exists within the Jam logic.
> In order to build it, if you're in the same directory as the build.jam
> that declares it, then you can simply specify its name:
> bjam l
> If you're going to specify the directory where the target is declared,
> you must use the target reference syntax: [directory of a
> build.jam]//[target name]. In this case, to build "l" specifying the
> directory, the command would look like this:
> bjam .//l
> The other two targets are the actualized virtual target names, a.k.a.
> low-level Jam engine targets. They are declared to the engine during
> the actualization phase in the virtual-target module:
> DEPENDS $(target:G=e) : $(target) ;
> DEPENDS $(target:G=e:R=$(path)) : $(target) ;
> An <e> grist is used to denote both of these targets.

Thanks. So to be perfectly clear: 'l' isn't known to the engine, which
implies that any target name I use on the command-line is never passed
directly to the engine (e.g. using `bjam.update()`, with the Python
frontend), but is looked up in the b2 logic and translated to a
registered target name that is known by the engine. Right ? (The reason
I ask is that in my own experimentation I'm using 'alias' to declare all
possible mappings, and I wonder what names I need to register as aliases
for command-line target names to be recognized by the engine directly.

And a related question: where is the path schema defined that generates
a file name including different features (such as
'bin/gcc-6.3.1/debug/') ? And how is that schema chosen by a
given target ? Is it used by all targets, whether the given features
affect the target build or not ?


      ...ich hab' noch einen Koffer in Berlin...

Boost-Build list run by bdawes at, david.abrahams at, gregod at, cpdaniel at, john at