Building Boost 32/64 on Windows

From NEOSYS Dev Wiki
Jump to navigationJump to search

building boost x64 "release only" in windows from command line using ready icu binaries

  • Boost x64 binaries are not available from boost or not exactly the right tool version perhaps
  • Building boost x64 binaries requires icu x64 binaries which we have to make or get
  • NB building icu "release only" can be done from the command line with sdk only
  • Building icu debug version can be done from command line but requires a path to visual studio's bscmake (express will do)

Getting ICU's binary libraries

Here we get "release only" binaries from icu at http://site.icu-project.org/download

http://download.icu-project.org/files/icu4c/4.6/icu4c-4_6-Win64-msvc10.zip

and extract to

F:\icu4c-4_6-Win64-msvc10

check they are at the right level

dir F:\icu4c-4_6-Win64-msvc10\icu

Build Boost Builder

Install Windows SDK and get into a SDK command line and get into boost

f:
cd \boost_a_46_1

NOTE the boost builder "bjam" MUST be built in x86 mode!

setenv /x86 /Release
bootstrap

Check if Boost builds with ICU

setenv /x64 /Release

First build the regex library only to check that icu is being used

bjam variant=release --toolset=msvc-10.0 architecture=x86 address-model=64 -sICU_PATH=F:\icu4c-4_6-Win64-msvc10\icu --with-regex stage --stagedir=stage64 -j2 -a

If it says HAS_ICU=NO then do the following work otherwise skip to final section and build all five boost binary libraries needed by Exodus

Work-around for "HAS_ICU BUILDS: NO"

a boost build bug that tests for existence of *debug* version of ICU even when building release only version of boost.

log will show you all the attempted linking including bin/bin64 lib/lib64 issues.

notepad bin\v2\config.log

also includes an library list in a @file

notepad bin.v2\libs\regex\build\msvc-10.0\debug\address-model-64\architecture-x86\threading-multi\has_icu.exe.rsp

LINK : fatal error LNK1181: cannot open input file 'icuind.lib'

bjam should not use the debug libraries while building regex so probably we can just use the release versions as debug to get around the icu detection!

cd icu\lib64
copy icuin.lib icuind.lib
copy icuuc.lib icuucd.lib

Build Boost with ICU

setenv /x64 /Release
bjam variant=release --toolset=msvc-10.0 architecture=x86 address-model=64 -sICU_PATH=F:\icu4c-4_6-Win64-msvc10\icu --with-date_time --with-filesystem --with-regex --with-system --with-thread stage --stagedir=stage64 -j2 -a
dir stage66\lib