xcodebuild读取的手册页:
从包含项目的目录(即包含projectname.xcodeproj包的目录)运行xcodebuild.
我想保持我的源目录(这是一个Subversion外部)干净且未修改,并将我的目标文件和可执行文件构建到完全位于源目录之外的位置.
是否有任何方法xcodebuild可以使用make工具甚至msbuildWindows上的方式从终端构建单独的构建目录?
Dav*_*eer 31
您可以从命令行设置构建设置.该CONFIGURATION_BUILD_DIR会设置生成目录.例如:
xcodebuild -project YourProject.xcodeproj -configuration Debug -target All ARCHS=x86_64 ONLY_ACTIVE_ARCH=YES CONFIGURATION_BUILD_DIR=../some/other/dir
Run Code Online (Sandbox Code Playgroud)
在Apple的网站上可以找到参考:
要实现完全分离,必须更改以下构建设置(不仅仅是CONFIGURATION_BUILD_DIR接受的答案建议),否则Xcode仍会在其默认构建文件夹下构建一些工件.
在我的机器的Xcode通常会生成一切./Build和./DerivedData地方当前目录是我的项目之一.
我希望xcodebuild在Build-command-line文件夹下构建所有内容,以便我xcodebuild -scheme MyScheme -showBuildSettings | grep Build\/找到与所有构建路径相对应的所有构建设置,并通过trial-end-error我发现"生成"构建设置足以将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
Run Code Online (Sandbox Code Playgroud)
在哪里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
Run Code Online (Sandbox Code Playgroud)
注意:确保在xcconfig中使用绝对路径,否则可能会出现错误:Xcode在启动时崩溃"parentPath必须为nil但不是.
我已经写了一篇关于这个解决方案的帖子,有一些背景知识:xcodebuild:如何真正改变它的构建路径.
PS当然,这些信息可能会有所变化,但Xcode Version 7.3.1 (7D1014)对我来说,它的效果非常好.
在我的项目中,设置SYMROOT足以在不同的位置构建项目,而其他位置保持不变。
来自 Apple 的Xcode 构建设置参考(我是通过这里的另一个答案遇到的,谢谢!):
SYMROOT(构建产品路径)
说明:目录路径。标识包含产品文件和中间构建文件的目录层次结构的根。产品和构建文件放置在此目录的子目录中。
...
影响:BUILT_PRODUCTS_DIR、CONFIGURATION_BUILD_DIR (...)
xcodebuild手册页中也多次提到此设置:
可用的操作有:
构建:在构建根(SYMROOT)中构建目标...
清洁:从构建根 (SYMROOT) 中删除构建产品和中间文件。...
对于工作区,如果您使用 CocoaPods:
xcodebuild -workspace youProject.xcworkspace -scheme yourScheme -sdk iphonesimulator -configuration Release SYMROOT=$(PWD)/build
Run Code Online (Sandbox Code Playgroud)
这会将您的 .app 放入 ./build/Release-iphonesimulator
| 归档时间: |
|
| 查看次数: |
12823 次 |
| 最近记录: |