JBL*_*JBL 4 c++ boost ios boost-locale b2
我目前正在尝试为 iOS 构建 Boost.Locale,但无法找到 iconv 库(我正在成功构建 Boost for iOS 的其他部分,例如thread或filesystem)。
我试图让 Boost.Build 自己找到它,我试图将变量设置ICONV_PATH为指向 iPhoneOS SDK iconv lib。检查 Boost.Locale 中的 Jamfile,我偶然发现了这条规则:
lib iconv
:
: <search>$(ICONV_PATH)/lib <link>shared <runtime-link>shared
:
: <include>$(ICONV_PATH)/include
;
Run Code Online (Sandbox Code Playgroud)
所以我认为设置-sICONV_PATH为/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.4.sdk/usr就足够了,因为这个目录包含一个lib和一个include包含 iconv lib 和标头的文件夹,但 Boost 仍然找不到它,并吐出:
iconv (libc) : no
iconv (separate) : no
icu : no
icu (lib64) : no
Boost.Locale needs either iconv or ICU library to be built.
Run Code Online (Sandbox Code Playgroud)
请注意,我总是b2使用该--reconfigure选项进行调用,因此它不是先前调用的缓存结果(该调用(cached)在上面的列表中会有尾随。
那么,有没有一种方法可以将 Boost 正确指向 iOS SDK 中存在的 iconv 实现呢?如果可能的话,我想避免构建单独的 iconv 。
小智 5
我遇到了类似的问题。经过一番挖掘和一些转移注意力的事情后,我了解到 boost 通过编译 has_iconv.cpp 程序来检测 iconv。就我而言(使用很多人似乎用于编译 iOS 的 boost.sh 脚本), config.log 中存在许多编译错误,这是由 user-config.jam 中的错误 using-syntax 引起的。所以问题 - 至少对我来说 - 不是设置 ICONV_PATH 而是让检测程序编译!也许你也有类似的问题。
如果您有兴趣,我在我的博客中写了一篇完整的发现文章。