Caroline Beltran
Caroline Beltran

Reputation: 918

Cannot build Boost::Locale with ICU 53.1 on Visual C++ 2013

I'm trying to build Boost::Locale (Boost version 1.56) using the 'Building Boost.Locale' instructions. Firstly, I successfully installed the complete Boost library a few months ago, which created a number of Boost::Locale .dll & .lib files:

boost_locale-vc120-mt-1_56.dll
boost_locale-vc120-mt-1_56.lib
boost_locale-vc120-mt-gd-1_56.dll
boost_locale-vc120-mt-gd-1_56.lib

Today, I downloaded ICU4C 53.1 and built it (both debug and release). I added the following directory to my computer path:

d:\icu\bin

Next, I ran the ICU tests and they ran fine.

Then I tried to link Boost::Locale with ICU and did the following as indicated in the Locale installation directions:

From the command prompt, I typed:

.\bjam -sICU_PATH=d:\icu --with-locale stage

It indicated that it was building and displayed '...patience...found 1214 targets...' on screen

Here are the results of D:\boost_1_56_0\bin.v2\config.log:

...found 1 target...
...updating 1 target...
config-cache.write bin.v2\project-cache.jam
...updated 1 target...

At this point, I don't know what 'target' got updated so I created a small test app using get_all_backends() to see what backends were being supported. Unfortunately, only winapi and std were listed.

Can someone suggest what may have gone wrong?

UPDATE

Upon opening up the Locale jam file:

searched-lib icudt : :  <search>$(ICU_PATH)/lib
                        <name>icudata
                        <link>shared
                        <runtime-link>shared ;

I am not sure about this but the snippet above refers to icudt and I noticed that the dll files have the version of ICU appended, i.e.: icudt

I'm going to update the references to match the appended version, i.e.: icudt53 and see what happens.

Upvotes: 0

Views: 564

Answers (1)

Caroline Beltran
Caroline Beltran

Reputation: 918

I got Boost Locale working fine, but for some reason, I could never do it using the Boost Locale instructions. If the Boost Locale installation instructions work for you, good. If not, you can do what I did and do a complete rebuild of Boost.

The following assumes that you have correctly built ICU and included it into your path.

  1. change directory to boost root, e.g.: d:\boost_1_56_0

  2. type: bootstrap

  3. bjam -sICU_PATH=d:\icu --toolset=msvc-12.0 --build-type=complete stage

The above worked just fine for me. Just make sure to specify the version of VC++, in my case above 12.0

Upvotes: 1

Related Questions