iPhoneアプリでpostgresqlにアクセスしたときのメモ。
開発環境 Xcode4.5.2 IOS6.0
ここPostgreSQL Client Library (libpq) for iPhone/iPadを参考にして作成(まんまパクr)。
libpqのダウンロード
libpqが含まれるpostgresqlのソースコードをダウンロード
PostgreSQLソースコードから好きなバージョンをダウンロード
私は2012/12/27現在最新のpostgresql-9.2.2.tar.bz2をダウンロードしました
libpqのビルド
ターミナルを起動し、ダウンロードしてきたpostgresql-9.2.2に移動し、以下のコマンドを起動
./configure make -C src/interfaces/libpq ar -t src/interfaces/libpq/libpq.a
必要なファイルは以下のもの(※バージョンによって必要なファイルが変わってくるのできちんと確認)
fe-auth.o fe-connect.o fe-exec.o fe-misc.o fe-print.o fe-lobj.o fe-protocol2.o fe-protocol3.o pqexpbuffer.o pqsignal.o fe-secure.o libpq-events.o chklocale.o inet_net_ntop.o noblock.o pgstrcasecmp.o thread.o ip.o md5.o encnames.o wchar.o
Xcodeプロジェクト作成
Xcode起動➡新規プロジェクト➡iOSのFramework & LibraryのCocoa Touch Static Libraryを選択➡ProductNameは適当に"psqlv9"にチェックには何も入れず、作成。(このときできたpsqlv9フォルダにpostgresql-9.2.2フォルダを入れておく、後のユーザヘッダ検索パスでの参照を楽にするため)
以下のファイルをプロジェクトに追加postgresql-9.2.2/src/interfaces/libpq fe-auth.c fe-connect.c fe-exec.c fe-lobj.c fe-misc.c fe-print.c fe-protocol2.c fe-protocol3.c fe-secure.c libpq-events.c pqexpbuffer.c pqsignal.c
postgresql-9.2.2/src/backend/libpq md5.c ip.c
postgresql-9.2.2/src/backend/utils/mb wchar.c encnames.c
postgresql-9.2.2/src/port chklocale.c inet_net_ntop.c noblock.c pgstrcasecmp.c thread.cProject➡TARGETS➡Build Setting➡Search Paths➡User Header Search Pathsに以下のパスを追加
$(SRCROOT)/postgresql-9.2.2/src/non-recursiveをrecursineにして再帰的にする。User Header Search Pathsのところをクリックしてたら出てくるよ。
pq_Prefix.pchに以下の1行を追加します。
#define FRONTEND 1
ユニバーサルバイナリの作成
上のツールバーのProduct➡Edit Schemeで構成をReleaseにしてDeviceとSimulatorの両方でビルド(Run)
psqlv9プロジェクトフォルダ内でターミナルから以下のコマンドを実行してユニバーサルバイナリを作成lipo -create /Users/自分のユーザ名/Library/Developer/Xcode/DerivedData/作成したプロダクト名(psqlv9)-長い英文字列/Build/Products/Release-iphoneos/libpsqlv9.a /Users/自分のユーザ名/Library/Developer/Xcode/DerivedData/作成したプロダクト名(psqlv9)-長い英文字列/Build/Products/Release-iphonesimulator/libpsqlv9.a -output libpsql.a
自分は特に他の設定はいじってないのでデフォルトの状態です。Productの.aファイルを確認したらどこに作成されているかは分かると思います。おそらく作成場所も指定もできるはずなので分かる人は好き勝手にやってください。
これでライブラリ作成は終了!では使ってみよう! 適当に新しいプロジェクト作って先ほど作成したlibpsql.aを追加しFrameworksフォルダに入れておく、 ProjectのTARGETSのBuild Phasesタブを選択、Link Binary With Librariesにlibpsql.aがあるか確認
postgresql-9.2.2/src/interfaces/libpq/libpq-fe.h postgresql-9.2.2/src/include/postgres_ext.hを追加し、この二つのヘッダーファイルを忘れずimportする。
0 件のコメント:
コメントを投稿