[CMake] FindBoost: find both win32 and x64 static libs

Hicham Mouline hicham at mouline.org
Tue Dec 7 16:27:43 EST 2010


From: philiplowman at gmail.com [mailto:philiplowman at gmail.com] On Behalf Of
Philip Lowman
Sent: 07 December 2010 13:17
To: Hicham Mouline
Cc: Philip Lowman; Dmytro Ovdiienko; CMake mailing list;
boost-build at lists.boost.org
Subject: Re: [CMake] FindBoost: find both win32 and x64 static libs

On Sunday, December 5, 2010, Hicham Mouline <hicham at mouline.org> wrote:
 > I've built both win32 and x64 versions of boost thread library with the
> following 2 lines:
>
> 1. 32bit cl.exe from msvc9 directory in the %PATH%
> bjam --with-thread --layout=versioned toolset=msvc address-model=64
> variant=release link=static threading=multi runtime-link=shared
>
> 2. 64bit cl.exe from msvc9 directory in the %PATH%
> bjam --with-thread --layout=versioned toolset=msvc address-model=64
> variant=release link=static threading=multi runtime-link=shared
>
> however, the resulting .lib files have identical names however:
> libboost_thread-vc90-mt-1_44.lib
> libboost_thread-vc90-mt.lib
>
> Dmytro, there is no distinction between 32bit and 64bit. The 64bit lib
size
> is approximately double the 32bit lib.
>
> boost-build, how to change this to include the bitness in the boost lib
> name?
> If it's impossible, Philip, perhaps FindBoost could be changed to allow
for
> different directories under BOOST_ROOT for the lib directories, something
> like lib\win32 and lib\x64 or whatever names can be agreed on.
If the user is compiling 32-bit code I could make FindBoost search "lib32"
before "lib" and for 64-bit code I can make it search "lib64" before "lib".
 If the user had an empty lib64 directory for some reason, it would still
find the boost libraries in "lib".
Would this work for you?
The BOOST_LIBRARYDIR variable is the only other workaround I can think to
this issue.

----------------------------------------
Well I'd like to have other FindBoost users opinions.
In terms of niceness (I believe there is no equivalent to Linux Standard
Base which says where files should be on windows), I am flipping between:

1. c:\Program Files\boost\lib  for 64bit libs and c:\Program Files
(x86)\boost\lib  for 32bit libs. I don't know where to put the headers then,
maybe duplicate them in both directories. Then BOOST_ROOT is kind of
irrelevant here.

2. C:\boost and then have lib32 lib64 under those, then BOOST_ROOT is
c:\boost and your proposed change would be nice, though this somehow seems a
little less "standard" to me.

Shall we hear what other boosters say?

Thanks,



More information about the CMake mailing list