C++のPoco Complete EditionをiOSで使うための手順を書きます。
下準備
※ターミナルで作業します。
- workディレクトリを作成する。このディレクトリで作業を行います。
- Opensslのビルド
- OpenSSL-for-iPhoneからダウンロードして、workディレクトリにOpenSSL-for-iPhoneというディレクトリ名で解凍します。
- OpenSSL-for-iPhone/build-libssl.shを実行します。
- OpenSSL-for-iPhoneにカレントディレクトリに移動して、
OPENSSLDIR=$PWD
を実行します。
- work/usr_x86ディレクトリを作成します。
- work/usr_armディレクトリを作成します。
- work/pocoにPocoを解凍します。
Pocoのビルド
Pocoをシュミレータで使用できるようにarmv7とx86のsoファイルをビルドします。
armv7のsoファイルをビルド
- pocoディレクトリに移動します。
- build/config/iPhoneを編集して、armv6をarmv7に修正します。
-
./configure --config=iPhone --static --omit=Data,PageCompiler --prefix=../usr_arm --include-path=$OPENSSLDIR/include --library-path=$OPENSSLDIR/lib --no-samples --no-tests
を実行します。 -
make -s -j 4
を実行します。 -
make install
を実行します。
x86のsoファイルをビルド
-
make distclean
を実行します。 -
./configure --config=iPhoneSimulator --static --omit=Data,PageCompiler --prefix=../usr_x86 --include-path=$OPENSSLDIR/include --library-path=$OPENSSLDIR/lib --no-samples --no-tests
を実行します。 -
make -s -j 4
を実行します。 -
make install
を実行します。
Universal Binaryを作成
workディレクトリに移動して、以下のスクリプトを実行します。
pocolipo.sh
#!/bin/bash
lipo -create -arch armv7 ./usr_arm/lib/libPocoCrypto.a -arch i386 ./usr_x86/lib/libPocoCrypto.a -output libPocoCrypto.a
lipo -create -arch armv7 ./usr_arm/lib/libPocoCryptod.a -arch i386 ./usr_x86/lib/libPocoCryptod.a -output libPocoCryptod.a
lipo -create -arch armv7 ./usr_arm/lib/libPocoFoundation.a -arch i386 ./usr_x86/lib/libPocoFoundation.a -output libPocoFoundation.a
lipo -create -arch armv7 ./usr_arm/lib/libPocoFoundationd.a -arch i386 ./usr_x86/lib/libPocoFoundationd.a -output libPocoFoundationd.a
lipo -create -arch armv7 ./usr_arm/lib/libPocoNet.a -arch i386 ./usr_x86/lib/libPocoNet.a -output libPocoNet.a
lipo -create -arch armv7 ./usr_arm/lib/libPocoNetd.a -arch i386 ./usr_x86/lib/libPocoNetd.a -output libPocoNetd.a
lipo -create -arch armv7 ./usr_arm/lib/libPocoNetSSL.a -arch i386 ./usr_x86/lib/libPocoNetSSL.a -output libPocoNetSSL.a
lipo -create -arch armv7 ./usr_arm/lib/libPocoNetSSLd.a -arch i386 ./usr_x86/lib/libPocoNetSSLd.a -output libPocoNetSSLd.a
lipo -create -arch armv7 ./usr_arm/lib/libPocoUtil.a -arch i386 ./usr_x86/lib/libPocoUtil.a -output libPocoUtil.a
lipo -create -arch armv7 ./usr_arm/lib/libPocoUtild.a -arch i386 ./usr_x86/lib/libPocoUtild.a -output libPocoUtild.a
lipo -create -arch armv7 ./usr_arm/lib/libPocoXML.a -arch i386 ./usr_x86/lib/libPocoXML.a -output libPocoXML.a
lipo -create -arch armv7 ./usr_arm/lib/libPocoXMLd.a -arch i386 ./usr_x86/lib/libPocoXMLd.a -output libPocoXMLd.a
lipo -create -arch armv7 ./usr_arm/lib/libPocoZip.a -arch i386 ./usr_x86/lib/libPocoZip.a -output libPocoZip.a
lipo -create -arch armv7 ./usr_arm/lib/libPocoZipd.a -arch i386 ./usr_x86/lib/libPocoZipd.a -output libPocoZipd.a
Universal Binaryの.aファイルができますので,実機とシュミレータで使用できます。