Boost logo

Boost-Build :

Subject: Re: [Boost-build] How to declare Boost libraries that do auto-linking
From: Ian Emmons (iemmons_at_[hidden])
Date: 2009-05-13 16:50:49


On May 13, 2009, at 4:20 PM, Vladimir Prus wrote:

> Ian Emmons wrote:
>
>> On May 13, 2009, at 11:55 AM, Vladimir Prus wrote:
>>
>>> On Wednesday 13 May 2009 19:45:44 Vladimir Prus wrote:
>>>> Ian Emmons wrote:
>>>>
>>>>> I am struggling to declare Boost libraries in my site-config.jam
>>>>> file
>>>>> for Windows. I would like to use the auto-linking feature to
>>>>> avoid
>>>>> specifying the library name, something like this:
>>>>>
>>>>> searched-lib BoostProgramOptions
>>>>> : # no sources
>>>>> : <toolset>msvc
>>>>> <address-model>64:<search>$(BoostDir)/msvc-64/stage/lib
>>>>> <address-model>32:<search>$(BoostDir)/msvc-32/stage/lib
>>>>> : # no default build
>>>>> : <include>$(BoostDir)
>>>>> <link>shared:<define>BOOST_PROGRAM_OPTIONS_DYN_LINK
>>>>> ;
>>>>>
>>>>> This does not work, because the searched-lib target generates a
>>>>> default value for the name feature ("BoostProgramOptions.lib")
>>>>> that
>>>>> does not exist. What is the proper way to do this?
>>>>
>>>> Not the searched-lib -- because it is meant for linking to a
>>>> library
>>>> by giving its name on the linker's command line.
>>>> For autolinking, just add:
>>>>
>>>> <address-model>64:<search>$(BoostDir)/msvc-64/stage/lib
>>>> <address-model>32:<search>$(BoostDir)/msvc-32/stage/lib
>>>> <include>$(BoostDir)
>>>>
>>>> to project requirements (in Jamroot).
>>>
>>> s/search/library-path (as Steven say)
>>>
>>> - Volodya
>>
>> That's very nice -- thanks! My library declaration now looks like
>> this:
>>
>> alias BoostProgramOptions
>> : # no sources
>> : <toolset>msvc
>> : # no default build
>> : <include>$(BoostDir)
>> <link>shared:<define>BOOST_PROGRAM_OPTIONS_DYN_LINK
>> <define>_SCL_SECURE_NO_WARNINGS
>> <address-model>64:<library-path>$(BoostDir)/msvc-64/stage/lib
>> <address-model>32:<library-path>$(BoostDir)/msvc-32/stage/lib
>> ;
>>
>> This works great if I put BoostProgramOptions into the sources list
>> of
>> a lib or exe rule. Unfortunately, it doesn't work for a unit-test
>> rule, because (apparently) the library-path feature is not propagated
>> to the PATH environment variable when the executable is run. (My
>> unit-
>> test rule does succeed in building the executable, though.)
>>
>> Is there a feature that causes a directory to be added to PATH on
>> Windows or LD_LIBRARY_PATH or its cousins on other platforms?
>
> dll-path -- you'd need that *in addition* to library path.
>
> - Volodya

Fantastic -- that works. Thanks again.



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