Hi all,
a promemoria to MERGE Device + Simulator libraries in a “fat” lib with XCODE.
Usage:
1. Create a static lib project
2. Select the Target
3. right-click and “Add … New Build Phase … New Run Script Build Phase”
4. Copy/paste the script below into the box
After that, customize script as you want!
In your BUILD folder you can see Release-Universal folder that contains merged libs with headers file!
Ref: albertopasca.it
Here the code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | ### EXECUTED ONLY WITH SIMULATOR->RELEASE->MyTarget #!/bin/sh ### CONFIG VARS MY_TARGET="MyTarget" IS_VALID="FALSE" SDK_VERSION=$(echo ${SDK_NAME} | grep -o '.\{3\}$') ALREADYINVOKED="false" UNIVERSAL_NAME="Release-universal" BUILD_DEV_PATH=${BUILD_DIR}/${UNIVERSAL_NAME}/tmp-dev/ BUILD_SIM_PATH=${BUILD_DIR}/${UNIVERSAL_NAME}/tmp-sim/ ### CONF CHECK CheckConfig() { # YOUR COMPILE RULES if [ ${CONFIGURATION} == "Release" ] && [ ${ACTION} == "build" ] && [ ${TARGET_NAME} == ${MY_TARGET} ] && [ ${PLATFORM_NAME} == "iphonesimulator" ] then IS_VALID="TRUE" fi } ### MKDIRS CreateFolders() { mkdir -p "${SYMROOT}/${UNIVERSAL_NAME}/" mkdir -p ${BUILD_DEV_PATH} mkdir -p ${BUILD_SIM_PATH} mkdir -p "${SYMROOT}/${UNIVERSAL_NAME}/include" } ### MULTIPLE BUILDS BuildLibs() { # BUILD DEVICE xcodebuild -configuration "Release" -target "PGLib" -sdk "iphoneos4.3" build RUN_CLANG_STATIC_ANALYZER=NO BUILD_DIR="${BUILD_DEV_PATH}" BUILD_ROOT="${BUILD_DEV_PATH}" # BUILD SIMULATOR xcodebuild -configuration "Release" -target "PGLib_Simulator" -sdk "iphonesimulator4.3" build RUN_CLANG_STATIC_ANALYZER=NO BUILD_DIR="${BUILD_SIM_PATH}" BUILD_ROOT="${BUILD_SIM_PATH}" } ### MERGE LIBS FatLibs() { LIB_DEV="${BUILD_DEV_PATH}/Release-iphoneos/libPGLib-DEV.a" LIB_SIM="${BUILD_SIM_PATH}/Release-iphonesimulator/libPGLib-SIM.a" LIB_UNI="${SYMROOT}/${UNIVERSAL_NAME}/libPGLib.a" HEADERS="${BUILD_DEV_PATH}/Release-iphoneos/usr/local/include/" cp "${HEADERS}"/* "${SYMROOT}/${UNIVERSAL_NAME}/include" lipo -create "${LIB_DEV}" "${LIB_SIM}" -output "${LIB_UNI}" } ### CLEAN WORKING DATA ClearTemporary() { rm -rf "${BUILD_DEV_PATH}" rm -rf "${BUILD_SIM_PATH}" } # ### MAIN # if [ "true" != ${ALREADYINVOKED:-false} ]; then # SKIP APPLE RECURSION CheckConfig ALREADYINVOKED="true" if [ ${IS_VALID} == "TRUE" ]; then # DO WORK CreateFolders BuildLibs FatLibs ClearTemporary echo "Custom script on RELEASE/SIMULATOR/${MY_TARGET} executed!"; else echo "Custom script SKIPPED execution!"; fi fi |
enjoy coding!!!
Ref: albertopasca.it


