让Xcode Project构建静态库

时间:2012-01-20 11:32:12

标签: objective-c ios xcode build static-libraries

我的ios项目有一个核心库。我在几个项目中使用这个库。

构建库时,我将.a -file和header-files复制到几个xcode项目中。一切都很好。

现在我希望每个使用该库的项目都能自己构建库。 我试着使用这个脚本:

 # Build Core library first
CORE="${PWD}/../Core"
IDENT="PROJECTIDENT"


 PROJ=$CORE/Core.xcodeproj

CORE_LIB="${PWD}/Classes/Core"
mkdir -p "${CORE_LIB}"
#rm -rf "${CORE_LIB}/"*
mkdir -p "/tmp/${IDENT}"




 IS_EMPTY=`ls "${CORE_LIB}" | wc -l`


 if [ "true" == ${ALREADYINVOKED:-false} ]; then
       echo "ALREADY INVOKED"

 else

 # CRITICAL:
 # Prevent infinite recursion (Xcode sucks)
 export ALREADYINVOKED="true"


  SDK_VERSION=$(echo ${SDK_NAME} | grep -o '.\{3\}$')
  OUT_DIR="/tmp/${IDENT}"
  EXEC_NAME="libCore.a"
  UNIVERSAL_DIR="${OUT_DIR}/Universal"

  rm -rf "${UNIVERSAL_DIR}"
  mkdir -p "${UNIVERSAL_DIR}"

 CONFIG="Debug"
 if [ ${CONFIGURATION} != "Debug" ]; then
 CONFIG="Release"
fi

echo "${CONFIG}"

# Create build
 DID_COMPILE=`xcodebuild -project $PROJ -target Core -configuration "${CONFIG}" -sdk "${PLATFORM_NAME}${SDK_VERSION}" build RUN_CLANG_STATIC_ANALYZER=NO BUILD_DIR="${OUT_DIR}" BUILD_ROOT="${OUT_DIR}" EXECUTABLE_NAME="${EXEC_NAME}" | grep "CompileC"`



 if [ ! -z "${DID_COMPILE}" ] || [ ${IS_EMPTY} -eq 0 ]; then

     # Copy Headers
     cp "${OUT_DIR}/${CONFIG}-${PLATFORM_NAME}/usr/local/include/"* "${UNIVERSAL_DIR}"
     cp "${OUT_DIR}/${CONFIG}-${PLATFORM_NAME}/${EXEC_NAME}"* "${UNIVERSAL_DIR}"

     # Finally we have a fat static library with .a and .h files
     # now we copy them to the Project
     rm -rf "${CORE_LIB}"
     cp -Rf "${UNIVERSAL_DIR}" "${CORE_LIB}"

fi

fi

此脚本只能每隔一段时间运行一次。

E.g。我在库类中进行了更改,并且在构建时,不会在刷新库依赖项时编译主项目。

然后我对库进行了另一次更改,再次构建,所有更改都可以在主要项目中使用。

但总是只有每一秒构建......

我该如何解决这个问题?

0 个答案:

没有答案