iOS 用Framework作成
XCode4 の話です。ほぼ、 xcatsan さんの Cocoaの日々: [iOS] Static Library (5) Frameworkを作成する に沿ってます。
ターミナルから操作するのを前提。
TARGET_NAME はスタティックライブラリを作成するターゲットですので注意。
下記のスクリプトは、 GitHub - a-yasui/MyObjC-Extension: My Objective-C's object extension にて使用している分です。
# # Create the iOS Library Framework. # # Reference: http://cocoadays.blogspot.com/2010/11/ios-static-library-5-framework.html # Copyright (c) 2011 a.yasui <a.yasui+github@gmail.com> # #-------------------------------------------------------------------- echo "[0] Framework: Preparing ..." #-------------------------------------------------------------------- TARGET_NAME="ATYSExt" FRAMEWORK_NAME="lib${TARGET_NAME}" BUILD_TARGET_NAME=$FRAMEWORK_NAME FRAMEWORK_VERSION_NUMBER="1.0" FRAMEWORK_VERSION=A FRAMEWORK_BUILD_PATH="${TARGET_BUILD_DIR}" FRAMEWORK_DIR="${FRAMEWORK_BUILD_PATH}/${FRAMEWORK_NAME}.framework" PACKAGENAME="${FRAMEWORK_NAME}.${FRAMEWORK_VERSION_NUMBER}.zip" INSTALL_DIR="${PROJECT_DIR}/iOSframework-${CONFIGURATION}/" [ ! -d $INSTALL_DIR ] && mkdir -p $INSTALL_DIR; FRAMEWORK_INSTALL_DIR="${INSTALL_DIR}/${FRAMEWORK_NAME}.framework" PARENT_PLATFORM="${PARENT_PLATFORM}" #-------------------------------------------------------------------- echo "[0] check the already installed?" #-------------------------------------------------------------------- if [ -d "${FRAMEWORK_INSTALL_DIR}" ]; then rm -rf ${FRAMEWORK_INSTALL_DIR}; echo " Delete file ${FRAMEWORK_INSTALL_DIR}." fi echo "TARGET_BUILD_DIR: ${TARGET_BUILD_DIR}" #-------------------------------------------------------------------- echo "[1] Framework: Building libraries ..." #-------------------------------------------------------------------- xcodebuild -target ${TARGET_NAME} clean; xcodebuild -configuration ${CONFIGURATION} -target ${TARGET_NAME} \ -sdk iphonesimulator${IPHONEOS_DEPLOYMENT_TARGET} \ SYMROOT="${SYMROOT}" DSTROOT="${FRAMEWORK_BUILD_PATH}" install [ $? != 0 ] && exit 1 xcodebuild -configuration ${CONFIGURATION} -target ${TARGET_NAME} \ -sdk iphoneos${IPHONEOS_DEPLOYMENT_TARGET} \ SYMROOT="${SYMROOT}" DSTROOT="${FRAMEWORK_BUILD_PATH}" install [ $? != 0 ] && exit 1 # DSTROOT="${FRAMEWORK_BUILD_PATH}" #echo "Framework: Cleaning framework..." #[ -d "${FRAMEWORK_BUILD_PATH}" ] && rm -rf "${FRAMEWORK_BUILD_PATH}" rm -rf ${FRAMEWORK_DIR}; echo "Already install framework is cleanning..." [ -d "${FRAMEWORK_INSTALL_DIR}" ] && rm -rf "${FRAMEWORK_INSTALL_DIR}" #-------------------------------------------------------------------- echo "[2] Framework: Setting up directories..." #-------------------------------------------------------------------- mkdir -p ${FRAMEWORK_DIR}/Versions/${FRAMEWORK_VERSION}/{Resources,Headers} echo "mkdir -p ${FRAMEWORK_DIR}/Versions/${FRAMEWORK_VERSION}/{Resources,Headers}" #-------------------------------------------------------------------- echo "[3] Framework: Creating symlinks..." #-------------------------------------------------------------------- ln -s ${FRAMEWORK_VERSION} ${FRAMEWORK_DIR}/Versions/Current ln -s Versions/Current/Headers ${FRAMEWORK_DIR}/Headers ln -s Versions/Current/Resources ${FRAMEWORK_DIR}/Resources ln -s Versions/Current/${FRAMEWORK_NAME} ${FRAMEWORK_DIR}/${FRAMEWORK_NAME} #-------------------------------------------------------------------- echo "[4] Framework: Creating library..." #-------------------------------------------------------------------- echo "Framework_build_path: ${FRAMEWORK_BUILD_PATH}" echo "sourceroot: ${SRCROOT}" echo "BUILD_ROOT: ${BUILD_ROOT}" lipo -create \ ${BUILD_ROOT}/${CONFIGURATION}-iphoneos/${FRAMEWORK_NAME}.a \ ${BUILD_ROOT}/${CONFIGURATION}-iphonesimulator/${FRAMEWORK_NAME}.a \ -o "${FRAMEWORK_DIR}/Versions/Current/${FRAMEWORK_NAME}" #echo "${FRAMEWORK_BUILD_PATH}++${SRCROOT}++/build/../++${CONFIGURATION}++-++iphoneos/++${FRAMEWORK_NAME}++.a " #cp "${FRAMEWORK_BUILD_PATH}/${EXECUTABLE_NAME}" "${FRAMEWORK_DIR}/Versions/Current/${FRAMEWORK_NAME}" #-------------------------------------------------------------------- echo "[5] Framework: Copying assets into current version..." #-------------------------------------------------------------------- PUBLIC_HEADERS_FOLDER_PATH="/usr/local/include/${FRAMEWORK_NAME}/" cp -r "${FRAMEWORK_BUILD_PATH}${PUBLIC_HEADERS_FOLDER_PATH}" ${FRAMEWORK_DIR}/Headers/ cp "${TARGET_NAME}-Info.plist" ${FRAMEWORK_DIR}/Resources/Info.plist #-------------------------------------------------------------------- echo "[6] Framework: Packaging framework..." #-------------------------------------------------------------------- cp -R "${FRAMEWORK_DIR}" "${FRAMEWORK_INSTALL_DIR}" #cd ${FRAMEWORK_BUILD_PATH} #zip -ry ${PACKAGENAME} $(basename $FRAMEWORK_DIR)