Boost logo

Boost-Build :

Subject: Re: [Boost-build] Boost-build Digest, Vol 69, Issue 8
From: Gevorg Voskanyan (v_gevorg_at_[hidden])
Date: 2011-05-13 10:45:52


Michael Krajnak wrote:

> Great! That works, what I have is:
>
> import toolset ;
> import os ;
> local stlDir = [ os.environ "STLPORT" ] ;
> ...
> using stlport : 5.2.1 :
> $(stlDir)/stlport :
> $(stlDir)/lib/evc9-x86 ;
>
> I do have a question about the "?=" syntax in your example.
>
> programFiles ?= [ os.envron "ProgramFiles" ] ;
>
> I assume this is "set value if not already set", something like "if
>!programFiles then programFiles = ..."

Yes.

> I wanted to a hard code a default value so I put something like:
>
> stlDir ?= [ "default/path/to/stlport"] ;
>
> But I get the following message:
>
> user-config.jam:43: in modules.load rule D:/dev/sapphire/stlport unknown
>in module user-config.

Yes, as [ ... ] is the rule (function) invocation syntax. E.g. [ os.environ
"ProgramFiles" ] means call the os.environ rule with "ProgramFiles" as argument;
in C++ the equivalent would be os.environ("ProgramFiles") .

> I can live without this, but at this point I would like to understand what's
>happening here.

I hope the above explains it. So to fix the error you need to write: stlDir ?=
"default/path/to/stlport" ;

> Thanks!
>
> Mike

HTH,
Gevorg


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