Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/116.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用iOS的iconv构建Boost.Locale_C++_Ios_Boost_Boost Locale_B2 - Fatal编程技术网

C++ 使用iOS的iconv构建Boost.Locale

C++ 使用iOS的iconv构建Boost.Locale,c++,ios,boost,boost-locale,b2,C++,Ios,Boost,Boost Locale,B2,我目前正在尝试为iOS构建Boost.Locale,但我无法找到iconv库(我正在成功地为iOS构建Boost的其他部分,例如线程或文件系统) 我试图让Boost.Build自己找到它,我试图将ICONV_PATH变量设置为指向iPhoneOS SDK ICONV库。在Boost.Locale中检查Jamfile时,我偶然发现了以下规则: lib iconv : : <search>$(ICONV_PATH)/lib <link>shared <run

我目前正在尝试为iOS构建Boost.Locale,但我无法找到iconv库(我正在成功地为iOS构建Boost的其他部分,例如
线程
文件系统

我试图让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 
  ;
请注意,我总是使用
--reconfigure
选项调用
b2
,因此它不是上一次调用的缓存结果(该调用在上面的列表中会有一个尾部
(缓存)


那么,有没有一种方法可以正确地将Boost指向iOS SDK中的iconv实现?如果可能的话,我希望避免构建单独的iconv。

在构建时,您应该收到以下日志输出

如果在Darwin/Mac OS X版本中未找到iconv库,请确保 没有多个iconv安装并提供-sICONV_路径 生成选项以指向iconv库的正确位置

首先,需要引导位置,$ICU=ICU根目录和构建ICU构建产品所在的目录(“bin/”、“include/”,等等):

然后


我也遇到了类似的问题。经过一番挖掘和一些繁琐的工作,我了解到boost是通过编译has_iconv.cpp程序来检测iconv的。在我的例子中(使用boost.sh脚本,很多人似乎都用它来编译iOS)config.log中有很多编译错误,这是由于user-config.jam中的错误使用语法造成的。因此,问题-至少对我来说-不是设置ICONV_路径,而是让检测程序编译!也许你也有类似的问题


如果您感兴趣,我做了一个测试。

稍后回答,但这里有一个工作配置,它使用iconv库(Boost v1_64_0)在iOS上支持Boost.Locale。可以从中获得一个实现,该实现使用Makefile为armv7、armv7s、arm64、i386和x86_64体系结构构建Boost框架

要构建32位ARM,请使用以下内容创建一个用户config.jam

using clang-darwin : arm                                                                                                                                                  
    : xcrun --sdk iphoneos clang++
    : <cxxflags>"-miphoneos-version-min=8.0  -arch armv7s -DBOOST_AC_USE_PTHREADS -DBOOST_SP_USE_PTHREADS -stdlib=libc++ -std=c++11 -D_LITTLE_ENDIAN -Wall -pedantic -Wno-unused-variable"
      <linkflags>"-arch armv7s"
      <striper>
    ;
using clang-darwin : arm64                                                                                                                                                  
    : xcrun --sdk iphoneos clang++
    : <cxxflags>"-miphoneos-version-min=8.0  -arch arm64 -DBOOST_AC_USE_PTHREADS -DBOOST_SP_USE_PTHREADS -stdlib=libc++ -std=c++11 -D_LITTLE_ENDIAN -Wall -pedantic -Wno-unused-variable"
      <linkflags>"-arch arm64"
      <striper>
    ;
using clang-darwin : x86                                                                                                                                                  
    : xcrun --sdk iphonesimulator clang++
    : <cxxflags>"-miphoneos-version-min=8.0  -arch i386 -DBOOST_AC_USE_PTHREADS -DBOOST_SP_USE_PTHREADS -stdlib=libc++ -std=c++11  -Wall -pedantic -Wno-unused-variable"
      <linkflags>"-arch i386"
      <striper>
    ; 
using clang-darwin : x86_64                                                                                                                                                 
    : xcrun --sdk iphonesimulator clang++
    : <cxxflags>"-miphoneos-version-min=8.0  -arch x86_64 -DBOOST_AC_USE_PTHREADS -DBOOST_SP_USE_PTHREADS -stdlib=libc++ -std=c++11  -Wall -pedantic -Wno-unused-variable"
      <linkflags>"-arch x86_64"
      <striper>
    ; 
使用叮当达尔文:arm
:xcrun--sdk iPhone操作系统铃声++
:“-miphoneos version min=8.0-arch armv7s-DBOOST_AC_USE_PTHREADS-DBOOST_SP_USE_PTHREADS-stdlib=libc++-std=c++11-D_LITTLE_ENDIAN-Wall-pedantic-Wno未使用的变量”
“-ArchV7S”
;
体系结构也可以设置为armv7,根据您的喜好更改cxxflags的值,但需要-arch标志

使用以下build命令为32位iPhone目标构建boost:

BOOST_BUILD_USER_CONFIG=<path-to-arm32-jam-config>/user-config.jam \
SDK_PATH=$(xcrun --sdk iphoneos --show-sdk-platform-path) \
./b2 -sICONV_PATH=$SDK_PATH/Developer/SDKs/iPhoneOS.sdk/usr \
    toolset=clang-darwin-arm \
    target-os=iphone
BOOST_BUILD_USER_CONFIG=<path-to-arm64-jam-config>/user-config.jam \
SDK_PATH=$(xcrun --sdk iphoneos --show-sdk-platform-path) \
./b2 -sICONV_PATH=$SDK_PATH/Developer/SDKs/iPhoneOS.sdk/usr \
    toolset=clang-darwin-arm64 \
    target-os=iphone
BOOST_BUILD_USER_CONFIG=<path-to-x86-jam-config>/user-config.jam \
SDK_PATH=$(xcrun --sdk iphonesimulator --show-sdk-platform-path)
./b2 -sICONV_PATH=$SDK_PATH/Developer/SDKs/iPhoneSimulator.sdk/usr \
    toolset=clang-darwin-i386 \
    target-os=iphone
BOOST_BUILD_USER_CONFIG=<path-to-x86_64-jam-config>/user-config.jam \
SDK_PATH=$(xcrun --sdk iphonesimulator --show-sdk-platform-path)
./b2 -sICONV_PATH=$SDK_PATH/Developer/SDKs/iPhoneSimulator.sdk/usr \
    toolset=clang-darwin-x86_64 \
    target-os=iphone
BOOST\u BUILD\u USER\u CONFIG=/USER-CONFIG.jam\
SDK_PATH=$(xcrun--SDK iphoneos--show SDK平台路径)\
/b2-sICONV_PATH=$SDK_PATH/Developer/SDKs/iPhoneOS.SDK/usr\
工具集=叮当作响的手臂\
目标操作系统=iphone
要构建64位ARM,请使用以下内容创建一个用户config.jam

using clang-darwin : arm                                                                                                                                                  
    : xcrun --sdk iphoneos clang++
    : <cxxflags>"-miphoneos-version-min=8.0  -arch armv7s -DBOOST_AC_USE_PTHREADS -DBOOST_SP_USE_PTHREADS -stdlib=libc++ -std=c++11 -D_LITTLE_ENDIAN -Wall -pedantic -Wno-unused-variable"
      <linkflags>"-arch armv7s"
      <striper>
    ;
using clang-darwin : arm64                                                                                                                                                  
    : xcrun --sdk iphoneos clang++
    : <cxxflags>"-miphoneos-version-min=8.0  -arch arm64 -DBOOST_AC_USE_PTHREADS -DBOOST_SP_USE_PTHREADS -stdlib=libc++ -std=c++11 -D_LITTLE_ENDIAN -Wall -pedantic -Wno-unused-variable"
      <linkflags>"-arch arm64"
      <striper>
    ;
using clang-darwin : x86                                                                                                                                                  
    : xcrun --sdk iphonesimulator clang++
    : <cxxflags>"-miphoneos-version-min=8.0  -arch i386 -DBOOST_AC_USE_PTHREADS -DBOOST_SP_USE_PTHREADS -stdlib=libc++ -std=c++11  -Wall -pedantic -Wno-unused-variable"
      <linkflags>"-arch i386"
      <striper>
    ; 
using clang-darwin : x86_64                                                                                                                                                 
    : xcrun --sdk iphonesimulator clang++
    : <cxxflags>"-miphoneos-version-min=8.0  -arch x86_64 -DBOOST_AC_USE_PTHREADS -DBOOST_SP_USE_PTHREADS -stdlib=libc++ -std=c++11  -Wall -pedantic -Wno-unused-variable"
      <linkflags>"-arch x86_64"
      <striper>
    ; 
使用叮当达尔文:arm64
:xcrun--sdk iPhone操作系统铃声++
:“-miphoneos version min=8.0-arch arm64-DBOOST_AC_USE_PTHREADS-DBOOST_SP_USE_PTHREADS-stdlib=libc++-std=c++11-D_LITTLE_ENDIAN-Wall-pedantic-Wno未使用的变量”
“-拱臂64”
;
使用以下build命令为64位iPhone目标构建boost:

BOOST_BUILD_USER_CONFIG=<path-to-arm32-jam-config>/user-config.jam \
SDK_PATH=$(xcrun --sdk iphoneos --show-sdk-platform-path) \
./b2 -sICONV_PATH=$SDK_PATH/Developer/SDKs/iPhoneOS.sdk/usr \
    toolset=clang-darwin-arm \
    target-os=iphone
BOOST_BUILD_USER_CONFIG=<path-to-arm64-jam-config>/user-config.jam \
SDK_PATH=$(xcrun --sdk iphoneos --show-sdk-platform-path) \
./b2 -sICONV_PATH=$SDK_PATH/Developer/SDKs/iPhoneOS.sdk/usr \
    toolset=clang-darwin-arm64 \
    target-os=iphone
BOOST_BUILD_USER_CONFIG=<path-to-x86-jam-config>/user-config.jam \
SDK_PATH=$(xcrun --sdk iphonesimulator --show-sdk-platform-path)
./b2 -sICONV_PATH=$SDK_PATH/Developer/SDKs/iPhoneSimulator.sdk/usr \
    toolset=clang-darwin-i386 \
    target-os=iphone
BOOST_BUILD_USER_CONFIG=<path-to-x86_64-jam-config>/user-config.jam \
SDK_PATH=$(xcrun --sdk iphonesimulator --show-sdk-platform-path)
./b2 -sICONV_PATH=$SDK_PATH/Developer/SDKs/iPhoneSimulator.sdk/usr \
    toolset=clang-darwin-x86_64 \
    target-os=iphone
BOOST\u BUILD\u USER\u CONFIG=/USER-CONFIG.jam\
SDK_PATH=$(xcrun--SDK iphoneos--show SDK平台路径)\
/b2-sICONV_PATH=$SDK_PATH/Developer/SDKs/iPhoneOS.SDK/usr\
工具集=clang-darwin-arm64\
目标操作系统=iphone
要构建32位x86模拟器,请创建具有以下内容的用户config.jam

using clang-darwin : arm                                                                                                                                                  
    : xcrun --sdk iphoneos clang++
    : <cxxflags>"-miphoneos-version-min=8.0  -arch armv7s -DBOOST_AC_USE_PTHREADS -DBOOST_SP_USE_PTHREADS -stdlib=libc++ -std=c++11 -D_LITTLE_ENDIAN -Wall -pedantic -Wno-unused-variable"
      <linkflags>"-arch armv7s"
      <striper>
    ;
using clang-darwin : arm64                                                                                                                                                  
    : xcrun --sdk iphoneos clang++
    : <cxxflags>"-miphoneos-version-min=8.0  -arch arm64 -DBOOST_AC_USE_PTHREADS -DBOOST_SP_USE_PTHREADS -stdlib=libc++ -std=c++11 -D_LITTLE_ENDIAN -Wall -pedantic -Wno-unused-variable"
      <linkflags>"-arch arm64"
      <striper>
    ;
using clang-darwin : x86                                                                                                                                                  
    : xcrun --sdk iphonesimulator clang++
    : <cxxflags>"-miphoneos-version-min=8.0  -arch i386 -DBOOST_AC_USE_PTHREADS -DBOOST_SP_USE_PTHREADS -stdlib=libc++ -std=c++11  -Wall -pedantic -Wno-unused-variable"
      <linkflags>"-arch i386"
      <striper>
    ; 
using clang-darwin : x86_64                                                                                                                                                 
    : xcrun --sdk iphonesimulator clang++
    : <cxxflags>"-miphoneos-version-min=8.0  -arch x86_64 -DBOOST_AC_USE_PTHREADS -DBOOST_SP_USE_PTHREADS -stdlib=libc++ -std=c++11  -Wall -pedantic -Wno-unused-variable"
      <linkflags>"-arch x86_64"
      <striper>
    ; 
使用clang darwin:x86
:xcrun--sdk iPhone模拟器铃声++
:“-miphoneos version min=8.0-arch i386-DBOOST_AC_USE_PTHREADS-DBOOST_SP_USE_PTHREADS-stdlib=libc++-std=c++11-Wall-pedantic-Wno未使用的变量”
“-拱门i386”
; 
使用以下build命令为32位iPhone模拟器构建boost:

BOOST_BUILD_USER_CONFIG=<path-to-arm32-jam-config>/user-config.jam \
SDK_PATH=$(xcrun --sdk iphoneos --show-sdk-platform-path) \
./b2 -sICONV_PATH=$SDK_PATH/Developer/SDKs/iPhoneOS.sdk/usr \
    toolset=clang-darwin-arm \
    target-os=iphone
BOOST_BUILD_USER_CONFIG=<path-to-arm64-jam-config>/user-config.jam \
SDK_PATH=$(xcrun --sdk iphoneos --show-sdk-platform-path) \
./b2 -sICONV_PATH=$SDK_PATH/Developer/SDKs/iPhoneOS.sdk/usr \
    toolset=clang-darwin-arm64 \
    target-os=iphone
BOOST_BUILD_USER_CONFIG=<path-to-x86-jam-config>/user-config.jam \
SDK_PATH=$(xcrun --sdk iphonesimulator --show-sdk-platform-path)
./b2 -sICONV_PATH=$SDK_PATH/Developer/SDKs/iPhoneSimulator.sdk/usr \
    toolset=clang-darwin-i386 \
    target-os=iphone
BOOST_BUILD_USER_CONFIG=<path-to-x86_64-jam-config>/user-config.jam \
SDK_PATH=$(xcrun --sdk iphonesimulator --show-sdk-platform-path)
./b2 -sICONV_PATH=$SDK_PATH/Developer/SDKs/iPhoneSimulator.sdk/usr \
    toolset=clang-darwin-x86_64 \
    target-os=iphone
BOOST\u BUILD\u USER\u CONFIG=/USER-CONFIG.jam\
SDK_PATH=$(xcrun--SDK iphonesimulator--show SDK平台路径)
/b2-sICONV_PATH=$SDK_PATH/Developer/SDKs/iPhoneSimulator.SDK/usr\
工具集=clang-darwin-i386\
目标操作系统=iphone
要构建64位x86模拟器,请创建具有以下内容的用户config.jam

using clang-darwin : arm                                                                                                                                                  
    : xcrun --sdk iphoneos clang++
    : <cxxflags>"-miphoneos-version-min=8.0  -arch armv7s -DBOOST_AC_USE_PTHREADS -DBOOST_SP_USE_PTHREADS -stdlib=libc++ -std=c++11 -D_LITTLE_ENDIAN -Wall -pedantic -Wno-unused-variable"
      <linkflags>"-arch armv7s"
      <striper>
    ;
using clang-darwin : arm64                                                                                                                                                  
    : xcrun --sdk iphoneos clang++
    : <cxxflags>"-miphoneos-version-min=8.0  -arch arm64 -DBOOST_AC_USE_PTHREADS -DBOOST_SP_USE_PTHREADS -stdlib=libc++ -std=c++11 -D_LITTLE_ENDIAN -Wall -pedantic -Wno-unused-variable"
      <linkflags>"-arch arm64"
      <striper>
    ;
using clang-darwin : x86                                                                                                                                                  
    : xcrun --sdk iphonesimulator clang++
    : <cxxflags>"-miphoneos-version-min=8.0  -arch i386 -DBOOST_AC_USE_PTHREADS -DBOOST_SP_USE_PTHREADS -stdlib=libc++ -std=c++11  -Wall -pedantic -Wno-unused-variable"
      <linkflags>"-arch i386"
      <striper>
    ; 
using clang-darwin : x86_64                                                                                                                                                 
    : xcrun --sdk iphonesimulator clang++
    : <cxxflags>"-miphoneos-version-min=8.0  -arch x86_64 -DBOOST_AC_USE_PTHREADS -DBOOST_SP_USE_PTHREADS -stdlib=libc++ -std=c++11  -Wall -pedantic -Wno-unused-variable"
      <linkflags>"-arch x86_64"
      <striper>
    ; 
使用clang darwin:x86_64
:xcrun--sdk iPhone模拟器铃声++
:“-miphoneos version min=8.0-arch x86_64-DBOOST_AC_USE_PTHREADS-DBOOST_SP_USE_PTHREADS-stdlib=libc++-std=c++11-Wall-pedantic-Wno未使用的变量”
“-拱门x86_64”
; 
使用以下build命令为64位iPhone模拟器构建boost:

BOOST_BUILD_USER_CONFIG=<path-to-arm32-jam-config>/user-config.jam \
SDK_PATH=$(xcrun --sdk iphoneos --show-sdk-platform-path) \
./b2 -sICONV_PATH=$SDK_PATH/Developer/SDKs/iPhoneOS.sdk/usr \
    toolset=clang-darwin-arm \
    target-os=iphone
BOOST_BUILD_USER_CONFIG=<path-to-arm64-jam-config>/user-config.jam \
SDK_PATH=$(xcrun --sdk iphoneos --show-sdk-platform-path) \
./b2 -sICONV_PATH=$SDK_PATH/Developer/SDKs/iPhoneOS.sdk/usr \
    toolset=clang-darwin-arm64 \
    target-os=iphone
BOOST_BUILD_USER_CONFIG=<path-to-x86-jam-config>/user-config.jam \
SDK_PATH=$(xcrun --sdk iphonesimulator --show-sdk-platform-path)
./b2 -sICONV_PATH=$SDK_PATH/Developer/SDKs/iPhoneSimulator.sdk/usr \
    toolset=clang-darwin-i386 \
    target-os=iphone
BOOST_BUILD_USER_CONFIG=<path-to-x86_64-jam-config>/user-config.jam \
SDK_PATH=$(xcrun --sdk iphonesimulator --show-sdk-platform-path)
./b2 -sICONV_PATH=$SDK_PATH/Developer/SDKs/iPhoneSimulator.sdk/usr \
    toolset=clang-darwin-x86_64 \
    target-os=iphone
BOOST\u BUILD\u USER\u CONFIG=/USER-CONFIG.jam\
SDK_PATH=$(xcrun--SDK iphonesimulator--show SDK平台路径)
/b2-sICONV_PATH=$SDK_PATH/Developer/SDKs/iPhoneSimulator.SDK/usr\
工具集=clang-darwin-x86_64\
目标操作系统=iphone

你是说iconv而不是ICU吗?我正试图专门用iconv构建它(是的,我收到了警告,正如我的帖子所说,我指定了
sICONV_路径
)。我曾尝试在Boost 1.74.0上实现它,但失败了。对我来说没有任何效果。现在尝试在1.64.0上使用它。稍后会回复。@Alexandki