Создание клиентской статической библиотеки libpq для iOS

Благодаря тому, что postgreSQL является продуктом с открытым исходным кодом, нет никаких препятствий для компиляции ее клиентской части, библиотеки libpq, под iOS, благо последняя является разновидностью BSD. Если самостоятельная сборка неинтерестна, данный раздел можно пропустить, скачав библиотеку libpq.a и папку Headers к ней:

libpq.a for iOS Xcode Download download folder OS X

Для libpq необходимы две библиотеки Open SSL, проект для их автоматической сборки под последнюю iOS скачиваем с сайта GitHub, в консоли переходим в каталог со скаченым проектом и запускаем скрипт build-libssl.sh из скаченного проекта.

На момент написания статьи актуальной являлась iOS 7.1. В результате сборки в каталоге появится папка /lib, содержащая две объединенные библиотеки под iOS симулятор и iOS устройство, которые мы будем использовать далее.

Следующим шагом с тогоже сайта скачиваем проект libpq.framework, в который помещаем собранные ранее библиотеки libcrypto.a и libssl.a. В проекте также присутствует вышеприведенный проект для компиляции Open SSL, но он не собирает библиотеки под 64х архитектуру, поэтому мы скомпилировали их отдельно.

Открываем скаченный проект в Xcode.

Теперь для создания универсальной библиотеки и под iOS симулятор и под iOS устройство делаем следующие шаги:

В Xcode выбираем File -> New -> Target. В диалоге выбираем iOS > Other > Aggregate. Далее вводим имя (например libpqAll).

Меняем в Build Settings архитектуру под все процессоры:

libpq xcode arm64, armv7, armv7s

Переходим в раздел Build Phases и добавляем фазу New Run Script Build Phase, в которую вставляем скрипт:

BUILD_TARGET_DIR=$PROJECT_DIR/build
xcodebuild -target $PROJECT_NAME -sdk "iphonesimulator" -configuration "Release" clean build
xcodebuild -target $PROJECT_NAME -sdk "iphoneos" -configuration "Release" clean build
lipo -create -output "$BUILD_TARGET_DIR/$PROJECT_NAME.a" "$BUILD_TARGET_DIR/Release-iphoneos/$PROJECT_NAME.a" "$BUILD_TARGET_DIR/Release-iphonesimulator/$PROJECT_NAME.a"

Выбираем схему для компиляции libpqAll (или с тем названием которое Вы ввели) и собираем проект. В результате в папке с проектом создается папка build с объединенной библиотекой libpq.a, которую мы и будем использовать далее.

Файлы для загрузки

Исправленный проект под iOS 7.1 libpq.framework

Библиотека libpq.a, с папкой Headers

 
 
homeЗаметили ошибкукарта сайта 
   Made on a Mac