提振.支持icu/unicode的正则表达式

Boost.Regex with icu/unicode support

本文关键字:正则表达式 unicode 支持 icu 提振      更新时间:2023-10-16

如何构建Boost。支持icu/unicode的正则表达式?我的编译器是GCC, IDE是Eclipse c++。如何使用Eclipse配置二进制文件?我试着这样做"bjam—sHAVE_ICU=1 toolset=gcc"。但这并没有奏效。当我用"bjam -has_icu"检查icu支持是否启用时,我仍然得到"有icu构建:没有"。

我使用-sICU_PATH=<icuRoot>-sICU_LINK="-L<icuLibDir>"构建针对ICU的Boost。

我看到Boost也不能正确检测ICU,并且需要修补文件has_icu_test.cpp(简单地从它的main()函数返回0)。

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

./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)

注意,当我遵循then net的一般建议并通过-sICU_LINK='-L/usr/local/lib'来增强b2时,ICU检测(版本1.62和1.63)失败。

在之前的回答中,用户"NuSkooler"提到将boost文件has_icu_test.cpp修补为return 0;会使测试短路,并且boost认为所有的都是与ICU的genkhi并继续进行。

然而确保你也删除所有ICU相关的函数调用和头文件从该文件,因为它通常是has_icu_test.cpp首先编译或链接失败,因为ICU库或头文件不能被boost内部找到。

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

(所有这些都是因为约翰·赫特不幸去世,我试图把字幕放在Heaven's Gate的剪辑中送给一个朋友)

b。