Re: How to add to PATH from user-config.jam?

Edward Diener via Boost-build <[email protected]> Tue, 17 Dec 2019 15:02:36 -0500
Newsgroups gmane.comp.lib.boost.build
Message-ID <[email protected]>
On 12/17/2019 6:14 AM, Mateusz Loskot via Boost-build wrote:
> On Mon, 16 Dec 2019 at 22:35, Mateusz Loskot <[email protected]> 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?

_______________________________________________
Unsubscribe & other changes: https://lists.boost.org/mailman/listinfo.cgi/boost-build