2015-02-26 2 views
0

Следующий сценарий является частью фаз сборки, который должен использоваться для объединения целей симулятора и устройства в единую универсальную структуру фреймов. Сборка возникла из this SO answer.Старый путь сохраняется в инфраструктуре XCode build

set -e 

FRAMEWORK_NAME="${PROJECT_NAME}" 

SIMULATOR_LIBRARY_PATH="${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${FRAMEWORK_NAME}.framework" 

DEVICE_LIBRARY_PATH="${BUILD_DIR}/${CONFIGURATION}-iphoneos/${FRAMEWORK_NAME}.framework" 

UNIVERSAL_LIBRARY_DIR="${BUILD_DIR}/${CONFIGURATION}-iphoneuniversal" 

FRAMEWORK="${UNIVERSAL_LIBRARY_DIR}/${FRAMEWORK_NAME}.framework" 


###################### 
# Build Frameworks 
###################### 
echo "PROJECT_NAME: ${PROJECT_NAME}" 
echo "CONFIGURATION: ${CONFIGURATION}" 
echo "BUILD_DIR: ${BUILD_DIR}" 
echo "SIMULATOR_LIBRARY_PATH: ${SIMULATOR_LIBRARY_PATH}" 
echo "DEVICE_LIBRARY_PATH: ${DEVICE_LIBRARY_PATH}" 
echo "UNIVERSAL_LIBRARY_DIR: ${UNIVERSAL_LIBRARY_DIR}" 

xcodebuild -project ${PROJECT_NAME}.xcodeproj -sdk iphonesimulator -target ${PROJECT_NAME} -configuration ${CONFIGURATION} clean build CONFIGURATION_BUILD_DIR=${BUILD_DIR}/${CONFIGURATION}-iphonesimulator 

Вот первая ошибка я получаю при выполнении этого сценария:

PROJECT_NAME: My-project_Framework 
CONFIGURATION: Debug 
BUILD_DIR: /Users/foouser/Library/Developer/Xcode/DerivedData/My-project_Framework-fjaslxiqhnitqxdksjbcxyuugfpk/Build/Products 
SIMULATOR_LIBRARY_PATH: /Users/foouser/Library/Developer/Xcode/DerivedData/My-project_Framework-fjaslxiqhnitqxdksjbcxyuugfpk/Build/Products/Debug-iphonesimulator/My-project_Framework.framework 
DEVICE_LIBRARY_PATH: /Users/foouser/Library/Developer/Xcode/DerivedData/My-project_Framework-fjaslxiqhnitqxdksjbcxyuugfpk/Build/Products/Debug-iphoneos/My-project_Framework.framework 
UNIVERSAL_LIBRARY_DIR: /Users/foouser/Library/Developer/Xcode/DerivedData/My-project_Framework-fjaslxiqhnitqxdksjbcxyuugfpk/Build/Products/Debug-iphoneuniversal 
Build settings from command line: 
    CONFIGURATION_BUILD_DIR = /Users/foouser/Library/Developer/Xcode/DerivedData/My-project_Framework-fjaslxiqhnitqxdksjbcxyuugfpk/Build/Products/Debug-iphonesimulator 
    SDKROOT = iphonesimulator8.1 

=== CLEAN TARGET My-project_Framework OF PROJECT My-project_Framework WITH CONFIGURATION Debug === 

Check dependencies 

Create product structure 
/bin/mkdir -p /Users/foouser/Library/Developer/Xcode/DerivedData/My-project_Framework-fjaslxiqhnitqxdksjbcxyuugfpk/Build/Products/Debug-iphonesimulator/My-project_iOS.framework 

Clean.Remove clean /Volumes/local\ my-project/my-project/ios/Framework/build/My-project_Framework.build/Debug-iphonesimulator/My-project_Framework.build 
    builtin-rm -rf /Volumes/local\ my-project/my-project/ios/Framework/build/My-project_Framework.build/Debug-iphonesimulator/My-project_Framework.build 

Clean.Remove clean /Users/foouser/Library/Developer/Xcode/DerivedData/My-project_Framework-fjaslxiqhnitqxdksjbcxyuugfpk/Build/Products/Debug-iphonesimulator/My-project_iOS.framework 
    builtin-rm -rf /Users/foouser/Library/Developer/Xcode/DerivedData/My-project_Framework-fjaslxiqhnitqxdksjbcxyuugfpk/Build/Products/Debug-iphonesimulator/My-project_iOS.framework 

** CLEAN SUCCEEDED ** 

=== BUILD TARGET My-project_Framework OF PROJECT My-project_Framework WITH CONFIGURATION Debug === 

Check dependencies 
error: Unable to create directory: /Volumes/local my-project/my-project/ios/Framework/build (Permission denied) 

Теперь вот проблема

Это точки монтирования, /Volumes/local my-project (с пробелом) было заменен с /Volumes/localmy-project (без пробела). Тем не менее XCode все еще, кажется, имеет старый путь где-то.

Вот что я сделал, чтобы попытаться сорвать его из XCode (версия 6.1.1):

  1. Добавлена ​​echo вызовы в сценарий, чтобы показать все входы командной строки xcodebuild. Как вы видите, этот путь не поступает из вызова командной строки.
  2. Очищено от всех целей (Выберите каждую цель, Продукт-> Очистить).
  3. Проверено все файлы, включенные в этот проект каркаса - все они имеют location, установленный в Relative to Project в инспекторе.
  4. Перезапуск XCode.
  5. Restarted Mac.
  6. Проверено project.pbxproj и все другие XML-файлы, содержащиеся в содержимом пакета проекта - абсолютный путь не найден.
  7. Проверил цель в инспекторе - его расположение является абсолютным (не может быть изменен) и правильно указывает на новый путь (/Volumes/localmy-project/...)
  8. Пошел в организатор и пошел работы-> My-Project-> Производная Данные-> Удалить.

После этого ошибка по-прежнему сохраняется. Итак - где, черт возьми, XCode получает этот старый путь?

Update

Я добавил следующее echos показать еще несколько переменной среду сборки в соответствии с @Louis Tur:

BUILT_PRODUCTS_DIR: /Users/foouser/Library/Developer/Xcode/DerivedData/My-Project_Framework-fjaslxiqhnitqxdksjbcxyuugfpk/Build/Products/Debug-iphoneos 
CACHE_ROOT: /var/folders/w1/v31fpgnd7sl0yp5ctqjgsxsh0000gn/C/com.apple.DeveloperTools/6.1.1-6A2008a/Xcode 
CONFIGURATION_BUILD_DIR: /Users/foouser/Library/Developer/Xcode/DerivedData/My-Project_Framework-fjaslxiqhnitqxdksjbcxyuugfpk/Build/Products/Debug-iphoneos 
CONFIGURATION_TEMP_DIR: /Users/foouser/Library/Developer/Xcode/DerivedData/My-Project_Framework-fjaslxiqhnitqxdksjbcxyuugfpk/Build/Intermediates/My-Project_Framework.build/Debug-iphoneos 
SYMROOT: /Users/foouser/Library/Developer/Xcode/DerivedData/My-Project_Framework-fjaslxiqhnitqxdksjbcxyuugfpk/Build/Products 

Update2 - теперь с еще более эхом!

DEPLOYMENT_LOCATION: NO 
DERIVED_FILE_DIR: /Users/foouser/Library/Developer/Xcode/DerivedData/My-project_Framework-fjaslxiqhnitqxdksjbcxyuugfpk/Build/Intermediates/My-project_Framework.build/Debug-iphoneos/My-project_Framework_Universal.build/DerivedSources 
DSTROOT: /tmp/My-project_Framework.dst 
INSTALL_DIR: /tmp/My-project_Framework.dst 
INSTALL_PATH: 
OBJECT_FILE_DIR: /Users/foouser/Library/Developer/Xcode/DerivedData/My-project_Framework-fjaslxiqhnitqxdksjbcxyuugfpk/Build/Intermediates/My-project_Framework.build/Debug-iphoneos/My-project_Framework_Universal.build/Objects 
OBJECT_FILE_DIR_normal: /Users/foouser/Library/Developer/Xcode/DerivedData/My-project_Framework-fjaslxiqhnitqxdksjbcxyuugfpk/Build/Intermediates/My-project_Framework.build/Debug-iphoneos/My-project_Framework_Universal.build/Objects-normal 
OBJECT_FILE_DIR_debug: 
OBJROOT: /Users/foouser/Library/Developer/Xcode/DerivedData/My-project_Framework-fjaslxiqhnitqxdksjbcxyuugfpk/Build/Intermediates 
PROJECT_TEMP_DIR: /Users/foouser/Library/Developer/Xcode/DerivedData/My-project_Framework-fjaslxiqhnitqxdksjbcxyuugfpk/Build/Intermediates/My-project_Framework.build 
REZ_COLLECTOR_DIR: /Users/foouser/Library/Developer/Xcode/DerivedData/My-project_Framework-fjaslxiqhnitqxdksjbcxyuugfpk/Build/Intermediates/My-project_Framework.build/Debug-iphoneos/My-project_Framework_Universal.build/ResourceManagerResources 
REZ_OBJECTS_DIR: /Users/foouser/Library/Developer/Xcode/DerivedData/My-project_Framework-fjaslxiqhnitqxdksjbcxyuugfpk/Build/Intermediates/My-project_Framework.build/Debug-iphoneos/My-project_Framework_Universal.build/ResourceManagerResources/Objects 
SHARED_PRECOMPS_DIR: /Users/foouser/Library/Developer/Xcode/DerivedData/My-project_Framework-fjaslxiqhnitqxdksjbcxyuugfpk/Build/Intermediates/PrecompiledHeaders 
SRCROOT: /Volumes/localmy-project/my-project/ios/Framework 
TARGET_BUILD_DIR: /Users/foouser/Library/Developer/Xcode/DerivedData/My-project_Framework-fjaslxiqhnitqxdksjbcxyuugfpk/Build/Products/Debug-iphoneos 
TARGET_TEMP_DIR: /Users/foouser/Library/Developer/Xcode/DerivedData/My-project_Framework-fjaslxiqhnitqxdksjbcxyuugfpk/Build/Intermediates/My-project_Framework.build/Debug-iphoneos/My-project_Framework_Universal.build 

Тем не менее ни один из этих указывают на старый путь тогда ..

+0

очистил все ваши производные данные для проекта? Не испытал этого сам, но вы выздоравливали мое любопытство. в man-странице 'xcodebuild' упоминается, что build/clean ссылается на корень сборки SYMROOT. И [документация на яблоко] (https://developer.apple.com/library/mac/documentation/DeveloperTools/Reference/XcodeBuildSettingRef/1-Build_Setting_Reference/build_setting_ref.html#//apple_ref/doc/uid/TP40003931-CH3-SW42) по этому вопросу заставляет меня хотеть сказать, чтобы попытаться присвоить значение «BUILT_PRODUCTS_DIR» и повторно запустить команду –

+0

ah или: 'clean: удалить продукт и собрать файлы в каталоге сборки продукта (CONFIGURATION_BUILD_DIR) и промежуточном build files directory (CONFIGURATION_TEMP_DIR). 'установите эти значения окружения –

+0

Благодарим за помощь. Что вы подразумеваете под «очищенными всеми вашими производными данными»? –

ответ

0

Я до сих пор не знаю, как этот старый путь подходит, но я нашел обходной путь, который работает для меня: Я могу заставить правильный путь DerivedData с помощью xcodebuild следующим образом (который заменяет старые вызовы в сценарии):

xcodebuild -scheme ${PROJECT_NAME} -derivedDataPath ${BUILD_DIR}/../../ -project ${PROJECT_NAME}.xcodeproj -sdk iphonesimulator -configuration ${CONFIGURATION} clean build CONFIGURATION_BUILD_DIR=${BUILD_DIR}/${CONFIGURATION}-iphonesimulator 

xcodebuild -scheme ${PROJECT_NAME} -derivedDataPath ${BUILD_DIR}/../../ -project ${PROJECT_NAME}.xcodeproj -sdk iphoneos -configuration ${CONFIGURATION} clean build CONFIGURATION_BUILD_DIR=${BUILD_DIR}/${CONFIGURATION}-iphoneos 

Если кто-то имеет представление о том, где старый путь все еще может сохраняться, пожалуйста, дайте мне знать.

+0

Как мы можем заставить правильный путь DerivedData с помощью xctool для проверки oclint. –

1

Я столкнулся с этой проблемой и решил сбросить папку «Исходные данные» в предпочтении Xcode. После настройки я завершаю Xcode и снова перезапускаю. Он решил.

Смежные вопросы