我目前正在尝试为 iOS 构建 Boost.Locale,但我无法找到 iconv 库(我正在为 iOS 成功构建 Boost 的其他部分,例如 thread
或 文件系统
)。
我试图让 Boost.Build 自己找到它,我试图将 ICONV_PATH
变量设置为指向 iPhoneOS SDK iconv 库。检查 Boost.Locale 中的 Jamfile,我偶然发现了这条规则:
lib iconv
:
: <search>$(ICONV_PATH)/lib <link>shared <runtime-link>shared
:
: <include>$(ICONV_PATH)/include
;
所以我想设置-sICONV_PATH
到 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.4.sdk/usr
就足够了,因为这个目录包含一个 lib
和一个包含 iconv 库和 header 的 include
文件夹,但 Boost 仍然找不到它,并吐出:
iconv (libc) : no
iconv (separate) : no
icu : no
icu (lib64) : no
Boost.Locale needs either iconv or ICU library to be built.
请注意,我总是使用 --reconfigure
选项调用 b2
,因此它不是先前调用的缓存结果(它会有尾随 (cached)
在上面的列表中。
那么,有没有办法将 Boost 正确指向 iOS SDK 中的 iconv 实现?如果可能,我想避免构建单独的 iconv。
最佳答案
我遇到了类似的问题。经过一些挖掘和一些红色鲱鱼后,我了解到 boost 通过编译 has_iconv.cpp 程序来检测 iconv。在我的例子中(使用很多人似乎用来为 iOS 编译的 boost.sh 脚本)在 config.log 中有很多编译错误是由 user-config.jam 中的不正确 using-syntax 引起的。所以问题 - 至少对我来说 - 不是设置 ICONV_PATH 而是让检测程序编译!也许你也有类似的问题。
我做了一个full write up of finding in my blog如果你有兴趣。
关于c++ - 使用 iconv 为 iOS 构建 Boost.Locale,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33413023/