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