Чтобы добиться полного разделения, необходимо изменить следующие параметры сборки (больше, чем просто CONFIGURATION_BUILD_DIR
, как предполагает принятый ответ), в противном случае Xcode все еще строит некоторые из своих артефактов в своей папке сборки по умолчанию.
На моей машине XCode обычно все компилирует в ./Build
и ./DerivedData
, где текущий каталог является одним из моих проектов.
Я хотел, чтобы xcodebuild собирал все в папке Build-command-line
, поэтому я использовал xcodebuild -scheme MyScheme -showBuildSettings | grep Build\/
, чтобы найти все параметры сборки, которые соответствуют всем путям сборки, и методом триал-ошибки я нашел "генеративные" настройки сборки, которых достаточно для перенаправить все артефакты сборки, созданные xcodebuild , в пользовательскую папку.
В итоге я использовал следующую команду:
BUILD_DIR=./Build-command-line
DERIVED_DATA_DIR=$(BUILD_DIR)/DerivedData
xcodebuild -project MyProject.xcodeproj \
-IDEBuildOperationMaxNumberOfConcurrentCompileTasks=`sysctl -n hw.ncpu` \
-scheme MyScheme \
-sdk iphonesimulator \
-destination 'platform=iOS Simulator,name=iPhone 6S Plus,OS=latest' \
-xcconfig command-line-build.xcconfig \
-derivedDataPath $(DERIVED_DATA_DIR) \
test
Где command-line-build.xcconfig
:
HERE_BUILD=$(SRCROOT)/Build-command-line
HERE_INTERMEDIATES=$(HERE_BUILD)/Intermediates
// Paths
// the following paths are enough to redirect everything to $HERE_BUILD
MODULE_CACHE_DIR = $(HERE_BUILD)/DerivedData/ModuleCache
OBJROOT = $(HERE_INTERMEDIATES)
SHARED_PRECOMPS_DIR = $(HERE_INTERMEDIATES)/PrecompiledHeaders
SYMROOT
Примечание: Убедитесь, что вы используете абсолютные пути в xcconfig, в противном случае у вас может возникнуть ошибка: Xcode вылетает при запуске «parentPath должен быть нулевым, но это не .
Я написал пост об этом решении с небольшим фоном: xcodebuild: как реально изменить путь сборки .
P.S. Конечно, эта информация может быть изменена, но с Xcode Version 7.3.1 (7D1014)
она отлично работает для меня.