具有icu / unicode支持的Boost.Regex

时间:2013-04-18 07:11:52

标签: c++ boost unicode icu gcc-warning

如何使用icu / unicode支持构建Boost.Regex?我的编译器是GCC,IDE是Eclipse C ++。如何使用Eclipse配置二进制文件? 我试着这样做“bjam --sHAVE_ICU = 1 toolset = gcc”。但它没有用。 当我检查是否使用“bjam -has_icu”启用了icu支持时,我仍然得到“有icu build:no”。

3 个答案:

答案 0 :(得分:5)

我使用-sICU_PATH=<icuRoot>-sICU_LINK="-L<icuLibDir>"为ICU构建了Boost。

我看过Boost也无法正确检测ICU,并且需要修补文件has_icu_test.cpp(只需从它的main()函数返回0)。如果您知道其他一切设置正确,这将有效。

答案 1 :(得分:0)

庞然大物和剑圣

在某些unix上,这对我有用:

./b2 link=static,shared -sICU_PATH=/usr/local install

在上述系统中,ICU标头安装在/usr/local/include/usr/local/lib

中的ICU库中

为了测试您是否安装了ICU标头(例如在/usr/local/include中),请查看目录/usr/local/include/unicode/是否存在并且其中包含大量标头文件(例如symtable.h

注意当我按照当时网络的一般建议并将-sICU_LINK='-L/usr/local/lib'传递给提升b2时,ICU检测(版本1.62和1.63)失败。

在上一个答案中,用户“NuSkooler”提到修补提升文件has_icu_test.cpp只是简单地return 0;短路测试并且提升认为所有人都是ICU并且继续使用它。

但是请确保您还删除所有与ICU相关的函数调用和该文件中的头文件,因为has_icu_test.cpp通常会失败。编译或链接,因为升级内部结构无法找到ICU库或头文件。

通过所有这些,我可以确认Aegisub的configure现在通过ICU测试。

(以及所有这些因为约翰赫特伤心地死了,我试图将字幕放在Heaven's Gate的剪辑中给朋友一个

答案 2 :(得分:0)

通过在执行b2时将include ICU目录的include路径直接添加到cflags解决了该问题。例如:

./b2 --with-regex
cflags="-O0 -I\"$ICU_PATH/include\"

您可能还需要添加ICU lib的路径,并且还需要将lib的完整路径添加到链接器。像这样:

export ICU_LINK="-L\"$ICU_PATH/lib\" -l\"$ICU_PATH/lib/libicudata.a\" -l\"$ICU_PATH/lib/libicui18n.a\" -l\"$ICU_PATH/lib/libicuuc.a\""
./b2 --with-regex
cflags="-O0 -I\"$ICU_PATH/include\"
-sICU_LINK=$ICU_LINK \