5

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

4

3 回答 3

5

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

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

于 2013-04-30T16:29:03.847 回答
1

通过在执行 b2 时将包含 ICU 目录的包含路径直接添加到 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 \
于 2019-08-29T11:26:02.977 回答
0

巨兽和巨兽

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

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

在所述系统中,ICU 标头安装在/usr/local/includeICU 库中/usr/local/lib

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

请注意,当我遵循当时网络的一般建议并传递-sICU_LINK='-L/usr/local/lib'给 boost'sb2时,ICU 检测(版本 1.62 和 1.63)失败。

在上一个答案中,用户“NuSkooler”提到修补 boost 文件has_icu_test.cpp以简单地return 0;使测试短路,boost 认为一切都是 ICU 的 genkhi 并继续进行。

但是,请确保您还从该文件中删除了所有与 ICU 相关的函数调用和头文件,因为通常情况下has_icu_test.cpp首先无法编译或链接,因为 boost 内部无法找到 ICU 库或头文件。

有了所有这些,我可以确认 Aegisub'sconfigure现在通过了 ICU 测试。

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

湾。

于 2017-01-28T19:10:33.370 回答