Boost logo

Boost-Build :

From: Edward Diener (eldiener_at_[hidden])
Date: 2019-12-17 20:02:36


On 12/17/2019 6:14 AM, Mateusz Loskot via Boost-build wrote:
> On Mon, 16 Dec 2019 at 22:35, Mateusz Loskot <mateusz_at_[hidden]> wrote:
>>
>> On Windows, I'm building tests of Boost.GIL using
>> dependencies like libpng, libjpeg, etc. installed with vcpkg.
>>
>> In my user-config.jam I have entries like this:
>>
>> using libjpeg
>> :
>> : <include>C:/vcpkg/installed/x86-windows/include
>> <search>C:/vcpkg/installed/x86-windows/lib
>> : <address-model>32
>> ;
>>
>> using libjpeg
>> :
>> : <include>C:/vcpkg/installed/x64-windows/include
>> <search>C:/vcpkg/installed/x64-windows/lib
>> : <address-model>64
>> ;
>>
>>
>> At build time, everything works fine.
>>
>> For run-time, GIL tests need to load DLLs in C:\vcpkg\installed\x86-windows\bin
>> If I add this location to PATH manually, everything works at run-time fine.
>>
>> I'm looking for a way to add that location to PATH from user-config.jam.
>> Is it possible? How?
>
> I approached the problem differently and added this at the top of my
> user-config.jam
>
> project
> : requirements
> <address-model>32:<dll-path>C:/vcpkg/installed/x86-windows/bin
> <address-model>64:<dll-path>C:/vcpkg/installed/x64-windows/bin
> ;
>
>
> Now all the DLLs of libjpeg, libpng, etc. can be found when I run
> either of these two:
>
> b2.exe toolset=msvc-14.2 address-model=32 libs/gil/test/extension/io//simple
> b2.exe toolset=msvc-14.2 address-model=64 libs/gil/test/extension/io//simple
>
> Spectacular success of mine! ;)

According to the Boost Build docs the dll-path feature only affects Unix
compilers. Perhaps the docs are incorrect regarding this feature.

>
> Next, I'd like to make this work for request of both at the same time,
> that is address-model=32,64 or address-model=64,32
>
> Interestingly, both first target in the list succeeds and the second
> fails with linking
> errors due to mismatch of machine type of libraries and build target.
> That is, unresolved external symbol errors are described as follows
>
> - for address-model=32,64
> warning LNK4272: library machine type 'x86' conflicts with target
> machine type 'x64'
>
> - for address-model=64,32
> warning LNK4272: library machine type 'x64' conflicts with target
> machine type 'x86'
>
> For both address models, checks of libraries succeed with yes.
>
> Is there any way to make the multi-model command work?


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