xcodebuild的手册页内容如下:
从包含项目的目录(即包含projectname.xcodeproj包的目录)中运行xcodebuild。
我希望保持源目录(这是一个Subversion外部的)干净和未修改,并将我的对象文件和可执行文件构建到一个完全位于源目录之外的位置。
有没有任何方法可以像在xcodebuild上使用make工具甚至msbuild那样,从终端构建一个独立的构建目录?
发布于 2011-02-11 15:00:43
可以从命令行设置生成设置。CONFIGURATION_BUILD_DIR将设置构建目录。例如:
xcodebuild -project YourProject.xcodeproj -configuration Debug -target All ARCHS=x86_64 ONLY_ACTIVE_ARCH=YES CONFIGURATION_BUILD_DIR=../some/other/dir在苹果的网站上有一个参考资料:
发布于 2016-02-26 22:13:08
为了实现完全分离,必须更改以下构建设置(不仅仅是CONFIGURATION_BUILD_DIR,就像已接受的答案所建议的那样),否则Xcode仍然会在其默认构建文件夹下构建它的一些工件。
在我的机器上,Xcode通常将所有内容构建为./Build和./DerivedData,当前目录是我的项目之一。
我希望xcodebuild能够构建Build-command-line文件夹下的所有内容,所以我使用xcodebuild -scheme MyScheme -showBuildSettings | grep Build\/找到了所有与所有构建路径相对应的构建设置,通过尝试性错误,我找到了“生成性”构建设置,这些设置足以将所有的构建工具都重定向到自定义文件夹中。
最后,我使用了以下命令:
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:如何真正更改其构建路径。
当然,这个信息是可以改变的,但是到了Xcode Version 7.3.1 (7D1014)的时候,它对我来说是完美的。
发布于 2018-11-19 09:53:34
Xcode 10
对于工作区,如果您使用的是CocoaPods:
xcodebuild -workspace youProject.xcworkspace -scheme yourScheme -sdk iphonesimulator -configuration Release SYMROOT=$(PWD)/build这将把您的.app放在./build/Release-iphonesimulator中。
https://stackoverflow.com/questions/4969932
复制相似问题