Пусть Xcode Project создаст статическую библиотеку - PullRequest
1 голос
/ 20 января 2012

У меня есть базовая библиотека для моих проектов ios.Я использую эту библиотеку в нескольких проектах.

При сборке библиотеки я скопировал .a-файл и файлы заголовков в несколько проектов 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

Этот скрипт работает, но только каждый второй раз.

Например, я вносил изменения в класс библиотеки, и построил, основной проект не скомпилированв то время как зависимость библиотеки обновляется.

Затем я делаю еще одно изменение в библиотеке, строю заново, и все изменения можно использовать в главном объекте.

Но всегда только каждая вторая сборка ....

Как я могу это исправить?

...