我正在尝试使用'Building Boost.Locale'指令构建Boost :: Locale(Boost版本1.56)。首先,几个月前我成功安装了完整的Boost库,创建了许多Boost :: Locale .dll& .lib文件:
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
今天,我下载了ICU4C 53.1并构建了它(包括调试和发布)。我将以下目录添加到我的计算机路径中:
d:\icu\bin
接下来,我运行了ICU测试并运行良好。
然后我尝试将Boost :: Locale与ICU链接,并按照Locale安装说明进行了以下操作:
在命令提示符下,我输入了:
.\bjam -sICU_PATH=d:\icu --with-locale stage
它表示它正在构建并在屏幕上显示“......耐心......找到1214个目标...”
以下是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...
此时,我不知道“目标”的更新内容,因此我使用 get_all_backends()创建了一个小型测试应用,以查看支持的后端。不幸的是,只列出了 winapi 和 std 。
有人可以建议可能出错的地方吗?
更新
打开Locale jam文件时:
searched-lib icudt : : <search>$(ICU_PATH)/lib
<name>icudata
<link>shared
<runtime-link>shared ;
我不确定这个,但上面的代码片段引用了icudt,我注意到dll文件附加了ICU的版本,即: icudt
我要更新引用以匹配附加版本,即: icudt53 ,看看会发生什么。
答案 0 :(得分:1)
我的Boost Locale工作正常,但出于某种原因,我永远无法使用Boost Locale指令。如果Boost Locale安装说明适合您,那很好。如果没有,你可以做我做的事情并完成Boost的重建。
以下假设您已正确构建ICU并将其包含在路径中。
更改目录以提升root权限,例如:d:\ boost_1_56_0
type:bootstrap
bjam -sICU_PATH = d:\ icu --toolset = msvc-12.0 --build-type = complete stage
以上对我来说效果很好。只需确保指定VC ++的版本,在我的情况下高于12.0