如何使用icu / unicode支持构建Boost.Regex?我的编译器是GCC,IDE是Eclipse C ++。如何在Eclipse中配置二进制文件? 我尝试过执行“bjam --sHAVE_ICU = 1 toolset = gcc”来实现这个目标,但它没有成功。 当我使用“bjam -has_icu”检查是否启用了icu支持时,我仍然得到“has icu builds:no”的提示。
如何使用icu / unicode支持构建Boost.Regex?我的编译器是GCC,IDE是Eclipse C ++。如何在Eclipse中配置二进制文件? 我尝试过执行“bjam --sHAVE_ICU = 1 toolset = gcc”来实现这个目标,但它没有成功。 当我使用“bjam -has_icu”检查是否启用了icu支持时,我仍然得到“has icu builds:no”的提示。
-sICU_PATH=<icuRoot>
和-sICU_LINK="-L<icuLibDir>"
来编译Boost并与ICU链接。通过在执行 b2 时直接添加包含 ICU 目录的 include 路径到 cflags 中,解决了这个问题。例如:
./b2 --with-regex
cflags="-O0 -I\"$ICU_PATH/include\"
您可能还需要添加 ICU 库的路径,而且还需要将库的完整路径添加到链接器中。类似于这样:
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 \
在某些Unix系统上,我成功地使用了以下命令:
./b2 link=static,shared -sICU_PATH=/usr/local install
在该系统中,ICU头文件安装在/usr/local/include
中,ICU库安装在/usr/local/lib
中。
为了测试是否已安装ICU头文件(例如在/usr/local/include
中),请查看目录/usr/local/include/unicode/
是否存在,并且其中有许多头文件(例如symtable.h
)。
注意,当我按照网络上的通用建议并将-sICU_LINK='-L/usr/local/lib'
传递给boost的b2
时,ICU检测(版本1.62和1.63)失败了。
在先前的答案中,用户“NuSkooler”提到修补boost文件has_icu_test.cpp
以简单地返回0;
可以绕过测试,使boost相信所有与ICU相关的问题都已解决。
然而,请确保您还从该文件中删除所有ICU相关的函数调用和头文件,因为通常情况下,has_icu_test.cpp
首先无法编译或链接,因为boost内部找不到ICU库或头文件。
有了这些,我可以确认Aegisub的configure
现在对我通过了ICU测试。
(这些都是因为约翰·赫特(John Hurt)不幸去世,我试图将字幕放到天堂之门
的剪辑中,以便送给一位朋友。)
b.