##概要
Xcodeを使用したiOS用Staticライブラリのビルドおよびインストール方法について整理します。
##環境
- 作成日: 2014/08/05
- OS: Mac OS X 10.9.4
- Xcode: Xcode6 beta5
- 言語: Objective-c
##参考文献
- Xcode 5 で iOS 用 static library を作ろう! on Qiita
##インストールディレクトリ
Staticライブラリ、ヘッダファイル、その他のリソースファイルを、下記にインストールします。図中のPROJECT_NAME
は、ライブラリのプロジェクト名です。
$(HOME)/local
include/<PROJECT_NAME> ... ヘッダファイル
lib/ ... ライブラリ(*.a)ファイル
resource/ ... xibなどのリソースファイル
##実行/設定手順
###プロジェクトの作成
File → New → Projectから、Cocoa Touch Static Libraryを選択。
###ライブラリインストール用ターゲットの追加
インストール用のターゲットを追加します。Target → Other → External Build Systemを選びます。
-
install.mk
なるMakefileを作成します。install.mk
ファイルの内容を文末に添付します。 - 本ターゲットを、ライブラリのビルドターゲットに依存させます。
- ターゲット → Info → External Build Tool Configurationの、Argumentsの項を、
-f install.mk
とします。 - 追加したターゲットでビルドすると、各種ファイルがインストールされます。
###install.mkの概要
-
build_command
マクロを用いて、プロジェクトをReleaseビルドします、 - lipoコマンドを使って、iPhoneOS用のライブラリと、シミュレータ用のライブラリをマージします。参考: lipo を使って簡単に Universal Binary を作成する方法
-
installコマンドを使ってヘッダファイルを目的のディレクトリ
$(HOME)/local/lib/$(PROJECT_NAME)
にコピーします。 - installコマンドを使って、
*.xib
ファイルを、resourceディレクトリ下にコピーします。
###install.mkファイルの記述内容
INSTALL_PATH = $(HOME)/local
LIB_NAME = lib${PROJECT_NAME}.a
CONFIGURATION = Release
build_command = xcodebuild build -target $(PROJECT_NAME) \
-project $(PROJECT_NAME).xcodeproj \
-configuration $(CONFIGURATION) \
ONLY_ACTIVE_ARCH=NO \
BUILD_DIR=$(BUILD_DIR) \
BUILD_ROOT=$(BUILD_ROOT)
all: build_library install_library install_header install_resource
build_library: dummy
$(build_command) -sdk iphoneos
$(build_command) -sdk iphonesimulator
install_library: dummy
mkdir -p $(INSTALL_PATH)/lib
lipo -create -output $(INSTALL_PATH)/lib/$(LIB_NAME) \
${BUILD_DIR}/${CONFIGURATION}-iphoneos/$(LIB_NAME) \
${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/$(LIB_NAME)
install_header: dummy
mkdir -p $(INSTALL_PATH)/include/$(PROJECT_NAME)
install -m 0644 ${BUILD_DIR}/${CONFIGURATION}-iphoneos/include/$(PROJECT_NAME)/*.h \
$(INSTALL_PATH)/include/$(PROJECT_NAME)
install_resource: dummy
mkdir -p $(INSTALL_PATH)/resource
find $(PROJECT_DIR) -name "*.xib" -exec install -m 0644 "{}" $(INSTALL_PATH)/resource ";"
dummy:
##備考
- Swiftを使ったstatic libraryは生成できない様です。すくなくとも、Xcode6 beta4では。