XCODEBUILD通用命令指南
名字
- xcodebuild
- 構(gòu)建Xcode項(xiàng)目和工作空間
大綱
xcodebuild [-project name.xcodeproj] [[-target targetname] ... | -alltargets]
[-configuration configurationname] [-sdk [sdkfullpath | sdkname]] [action ...]
[buildsetting=value ...] [-userdefault=value ...]
xcodebuild [-project name.xcodeproj] -scheme schemename [[-destination destinationspecifier] ...]
[-destination-timeout value] [-configuration configurationname] [-sdk [sdkfullpath | sdkname]]
[action ...] [buildsetting=value ...] [-userdefault=value ...]
xcodebuild -workspace name.xcworkspace -scheme schemename [[-destination destinationspecifier] ...]
[-destination-timeout value] [-configuration configurationname] [-sdk [sdkfullpath | sdkname]]
[action ...] [buildsetting=value ...] [-userdefault=value ...]
xcodebuild -version [-sdk [sdkfullpath | sdkname]] [infoitem]
xcodebuild -showsdks
xcodebuild -showBuildSettings [-project name.xcodeproj | [-workspace name.xcworkspace -scheme schemename]]
xcodebuild -list [-project name.xcodeproj | -workspace name.xcworkspace]
xcodebuild -exportArchive -archivePath xcarchivepath -exportPath destinationpath -exportOptionsPlist path
xcodebuild -exportLocalizations -project name.xcodeproj -localizationPath path
[[-exportLanguage language] ...]
xcodebuild -importLocalizations -project name.xcodeproj -localizationPath path
描述
xcodebuild構(gòu)建Xcode項(xiàng)目中的一個(gè)或者多個(gè)targets炊琉,或者一個(gè)Xcode項(xiàng)目或者一個(gè)Xcode工作空間的scheme名秀。
用法
構(gòu)建一個(gè)Xcode項(xiàng)目官觅,從包含你項(xiàng)目的目錄運(yùn)行xcodebuild(這個(gè)目錄包含包name.xcodeproj)。如果你有多個(gè)項(xiàng)目在這個(gè)目錄你需要使用-project去表明你構(gòu)建的是哪一個(gè)工程斜纪。默認(rèn)情況下xcodebuild構(gòu)建項(xiàng)目target列表中的第一個(gè)汇荐,并且使用默認(rèn)的配置掏击。這個(gè)規(guī)則對(duì)工程中的targets和所有工程的使用者是一樣的携冤。
構(gòu)建一個(gè)xcode工作空間悼粮,你必須通過-workspace和-scheme定義這個(gè)構(gòu)建。scheme參數(shù)控制哪一個(gè)targets被構(gòu)建如何被構(gòu)建曾棕,盡管你可以通過xcodebuild其他的選項(xiàng)推翻scheme的一些參數(shù)扣猫。
也有幾個(gè)選項(xiàng)展示Xcode、工程翘地、工作空間安裝版本的信息在本地的目錄中申尤,但是無論哪一個(gè)都不能加入新的action。其中包含-list衙耕,-showBuildSettings昧穿,-showsdks,-usage臭杰,-version粤咪。
選項(xiàng)
-project name.xcodeproj
構(gòu)建工程name.xcodeproj谚中。要求多個(gè)工程在一個(gè)相同的目錄下渴杆。
-target targetname
構(gòu)建一個(gè)指定targetname的target
-alltargets
構(gòu)建指定工程中所有的targets。
-workspace name.xcworkspace
構(gòu)建一個(gè)名字為name.xcworkspace的工作空間宪塔。
-scheme schemename
通過schemename構(gòu)建一個(gè)指定的scheme磁奖。這是必須的如果構(gòu)建一個(gè)工作空間。
-destination destinationspecifier
使用destinationspecifier來描述destination設(shè)備某筐。默認(rèn)destination兼容選擇的scheme比搭。查看Destinations部分有更詳細(xì)的信息。
-destination-timeout timeout
當(dāng)搜索destination設(shè)備的時(shí)候使用指定的timeout南誊。默認(rèn)是30s身诺。
-configuration configurationname
構(gòu)建每個(gè)target的時(shí)候通過configurationname使用指定的構(gòu)建配置。
-arch architecture
構(gòu)建每個(gè)target的時(shí)候通過architecture使用一個(gè)指定的構(gòu)建架構(gòu)抄囚。
-sdk [sdkfullpath | sdkname]
構(gòu)建一個(gè)Xcode工程或者工作空間不建議制定SDK霉赡,適當(dāng)?shù)氖褂肧DK中的構(gòu)建工具。這個(gè)參數(shù)可以是SDK的絕對(duì)路徑幔托,或者SDK的規(guī)范名稱穴亏。
-showsdks
Xcode知道的所有的SDK的列表蜂挪,包括他們適合使用的規(guī)范名稱SDK。不能信加入一個(gè)構(gòu)建嗓化。
-showBuildSettings
工程或者工作空間和scheme構(gòu)建設(shè)置的列表棠涮。不能新加入一個(gè)構(gòu)建。使用-project或者-workspace和-scheme刺覆。
-list
工程中targets和configurations的列表或者工作空間中schemes的列表严肪。不能新加入一個(gè)構(gòu)建。使用-project或者-workspace隅津。
-enableAddressSanitizer [YES | NO]
轉(zhuǎn)動(dòng)address sanitizer開或者關(guān)诬垂。重載了工作空間中scheme launch action的設(shè)置。
-enableThreadSanitizer [YES | NO]
轉(zhuǎn)動(dòng)thread sanitizer開或者關(guān)伦仍。重載了工作空間中scheme launch action的設(shè)置结窘。
-enableCodeCoverage [YES | NO]
測(cè)試的時(shí)候打開或者關(guān)閉代碼覆蓋。重寫了工作空間scheme test action的設(shè)置充蓝。
-derivedDataPath path
當(dāng)工作空間的scheme執(zhí)行一個(gè)動(dòng)作的時(shí)候重寫文件夾用來導(dǎo)出數(shù)據(jù)隧枫。
-resultBundlePath path
寫一個(gè)bundle到指定的路徑同時(shí)工作空間下的scheme執(zhí)行出了一個(gè)動(dòng)作的結(jié)果。
-exportArchive
指定一個(gè)archive應(yīng)該被輸出谓苟。要求-archivePath官脓,-exportPath和-exportOptionsPlist。不能和一個(gè)動(dòng)作前行涝焙。
-archivePath xcarchivepath
archive動(dòng)作之前為archive產(chǎn)品指定一個(gè)路徑卑笨,或者當(dāng)-exportArchive通過的時(shí)候指定一個(gè)archive輸出。
-exportPath destinationpath
指定一個(gè)產(chǎn)品輸出的目的地仑撞,包含輸出文件的名字赤兴。
-exportOptionsPlist path
為-exportArchive指定選項(xiàng)。xcodebuild -help能夠打印出來可獲得的所有選項(xiàng)隧哮。
-exportLocalizations
出口本地化XLIFF文件桶良。要求-project和-localizationPath。不能夠和一個(gè)動(dòng)作前行沮翔。
-importLocalizations
從XLIFF文件進(jìn)口本地化陨帆,要求-project和-localizationPath。不能和一個(gè)動(dòng)作前行采蚀。
-localizationPath
指定一個(gè)目錄路徑或者選出一個(gè)XLIFF文件疲牵。
-exportLanguage language
指定ISO 639-1語言選項(xiàng)包含在出口本地化中∮苁螅可以重復(fù)的指定多種語言纲爸。可以排除一個(gè)指定的出口僅包含開發(fā)語言字符串璧眠。
action ...
指定一個(gè)或者多個(gè)動(dòng)作執(zhí)行缩焦。有效的動(dòng)作包括:
build | 構(gòu)建一個(gè)target在build root(SYMROOT)读虏。這是一個(gè)默認(rèn)的動(dòng)作,在沒有動(dòng)作的時(shí)候使用袁滥。 |
---|---|
build-for-testing | 構(gòu)建target關(guān)聯(lián)測(cè)試在build root(SYMROOT)盖桥。這也將生成一個(gè)xctestrun文件在build root。它要求指定一個(gè)scheme题翻。 |
analyze | 構(gòu)建和分析一個(gè)target或者scheme在build root (SYMROOT)揩徊。它要求指定一個(gè)scheme。 |
archive | archive一個(gè)scheme從build root (SYMROOT)嵌赠。它要求指定一個(gè)scheme塑荒。 |
test | 測(cè)試一個(gè)scheme從build root (SYMROOT)。它要求指定一個(gè)scheme姜挺,(可選)選擇一個(gè)目的地齿税。 |
test-without-building | 測(cè)試編譯包。如果一個(gè)scheme伴隨著-scheme提供然后命令發(fā)現(xiàn)bundles在build root (SRCROOT)炊豪。如果一個(gè)xctestrun文件伴隨著-xctestrun然后命令發(fā)現(xiàn)在xctestrun文件中有指定的bundles路徑凌箕。 |
install-src | 復(fù)制工程資源到source root (SRCROOT)。 |
install | 構(gòu)建一個(gè)target安裝它到target's安裝目錄在distribution root (DSTROOT)词渤。 |
clean | 移除一個(gè)構(gòu)建產(chǎn)品和它里邊的文件從build root (SYMROOT)牵舱。 |
-xcconfig filename
加載文件名定義中的構(gòu)建設(shè)置當(dāng)構(gòu)建所有target的時(shí)候。這些設(shè)置將覆蓋另外的所有設(shè)置缺虐,包含命令行種的個(gè)別設(shè)置芜壁。
-xctestrun xctestrunpath
指定測(cè)試運(yùn)行參數(shù)「叩可以只被用于test-without-building動(dòng)作慧妄。不能夠用于-workspace和-project∪依#看<x-man-page://5/xcodebuild.xctestrun>文件格式詳細(xì)說明腰涧。
-skip-testing:test-identifier, -only-testing:test-identifier
約束測(cè)試動(dòng)作韧掩。-only-testing:約束一個(gè)測(cè)試動(dòng)作只測(cè)試一個(gè)指定的標(biāo)識(shí)紊浩,除掉其他所有的標(biāo)識(shí)。-skip-testing:約束一個(gè)測(cè)試動(dòng)作疗锐,跳過指定的測(cè)試標(biāo)識(shí)坊谁,但是包含其他所有的標(biāo)識(shí)。從TestTarget[/TestClass[/TestMethod]]得到測(cè)試標(biāo)識(shí)滑臊。一個(gè)xcodebuild命令能夠聯(lián)合多個(gè)測(cè)試選項(xiàng)口芍,但是-only-testing:優(yōu)先級(jí)高于跳過。-skip-testing:.-dry-run, -n打印將要執(zhí)行的命令雇卷,但是不要執(zhí)行他們鬓椭。
-skipUnavailableActions
跳過動(dòng)作用不執(zhí)行來代替失敗颠猴。這個(gè)選項(xiàng)只能兌現(xiàn)如果-scheme通過。
buildsetting=value
設(shè)置一個(gè)構(gòu)建設(shè)置buildsetting value小染。詳細(xì)信息參考https://developer.apple.com/documentation/DeveloperTools/Reference/XcodeBuildSettingRef/翘瓮。
-userdefault=value
設(shè)置用戶默認(rèn)userdefault value。
-toolchain [identifier | name]
使用給予的toolchain裤翩,指定identifier或者name资盅。
-quiet
不打印任何輸出處了警告和錯(cuò)誤。
-verbose
提供附加的輸出狀態(tài)踊赠。
-version
展示安裝的Xcode的版本信息呵扛。不能新添加一個(gè)構(gòu)建。使用的時(shí)候結(jié)合-sdk筐带,展示指定的SDK版本今穿,或者所有SDK如果沒有指定參數(shù)。此外伦籍,如果指定了infoitem會(huì)返回一行它的版本信息荣赶。
-license
展示Xcode和SDK許可協(xié)議。允許接受Xcode自己的許可協(xié)議在哪一個(gè)系統(tǒng)上都是有用的鸽斟。必須運(yùn)行一個(gè)有特權(quán)的用戶拔创。
Destinations
-destination選項(xiàng)作為destination說明符的一個(gè)參數(shù)描述destination設(shè)備(多個(gè)設(shè)備)。destination說明符是一個(gè)單獨(dú)的參數(shù)由一組逗號(hào)分隔的key=value組成富蓄。-destination選項(xiàng)可以指定多次以使xcodebuild在多個(gè)destinations上指定指定的動(dòng)作剩燥。
Destination說明符可以包含指定受支持的destination平臺(tái)的平臺(tái)鍵。根據(jù)你選擇設(shè)備的平臺(tái)提供額外的鍵立倍。
一些設(shè)備可能需要時(shí)間去查找灭红。-destination-timeout選項(xiàng)可以用于指定設(shè)備不可用之前的等待時(shí)間。如果未指定默認(rèn)的超時(shí)時(shí)間是30s口注。
目前xcodebuild支持以下平臺(tái):
MacOS | 本地Mac变擒,在Xcode中稱為My Mac,并且支持以下鍵:arch 架構(gòu)的時(shí)候使用也支持x86_64(默認(rèn))或者i386寝志。 |
---|---|
iOS | 一個(gè)iOS設(shè)備娇斑,支持以下鍵:id 要使用設(shè)備的標(biāo)識(shí),就像設(shè)備窗口中展示的那樣材部。一個(gè)有效的destination說明符必須包括id或者name毫缆,但是不能同時(shí)提供兩者。name 要使用設(shè)備的名字乐导。一個(gè)有效的destination說明符必須包括id或者name苦丁,但是不能同時(shí)提供兩者。 |
iOS Simulator | iOS設(shè)備的模擬器物臂,支持一下鍵:id 要使用設(shè)備模擬器的標(biāo)識(shí)旺拉,就像設(shè)備窗口中展示的那樣产上。一個(gè)有效的destination說明符必須包括id或者name,但是不能同時(shí)提供兩者蛾狗。name 要使用設(shè)備模擬器的名字蒂秘。一個(gè)有效的destination說明符必須包括id或者name,但是不能同時(shí)提供兩者淘太。OS 通過名稱指定模擬器設(shè)備時(shí)姻僧,該模擬器設(shè)備的iOS版本(例如6.0)或string latest(默認(rèn))表示此版本是Xcode支持的最新版本的iOS。 |
watchOS Simulator | watchOS模擬器應(yīng)用程序總是構(gòu)建和部署嵌套在iOS模擬器應(yīng)用程序中蒲牧。 要使用watchOS模擬器設(shè)備作為destination撇贺,請(qǐng)指定配置為運(yùn)行WatchKit應(yīng)用程序的方案,并指定與要使用的watchOS模擬器設(shè)備配對(duì)的iOS模擬器平臺(tái)目標(biāo)冰抢。 |
tvOS | 一個(gè)tvOS設(shè)備松嘶,支持一下鍵:id 要使用設(shè)備的標(biāo)識(shí),就像設(shè)備窗口中展示的那樣挎扰。一個(gè)有效的destination說明符必須包括id或者name翠订,但是不能同時(shí)提供兩者。name 要使用設(shè)備的名字遵倦。一個(gè)有效的destination說明符必須包括id或者name尽超,但是不能同時(shí)提供兩者。 |
tvOS Simulator | 一個(gè)tvOS設(shè)備模擬器梧躺,支持一下鍵:id 要使用設(shè)備模擬器的標(biāo)識(shí)似谁,就像設(shè)備窗口中展示的那樣。一個(gè)有效的destination說明符必須包括id或者name掠哥,但是不能同時(shí)提供兩者巩踏。name 要使用設(shè)備模擬器的名字。一個(gè)有效的destination說明符必須包括id或者name续搀,但是不能同時(shí)提供兩者塞琼。OS 通過名稱指定模擬器設(shè)備時(shí),該模擬器設(shè)備的iOS版本(例如6.0)或string latest(默認(rèn))表示此版本是Xcode支持的最新版本的iOS禁舷。 |
一些動(dòng)作(比如building)可以早沒有實(shí)際設(shè)備的情況下運(yùn)行彪杉。為了一般而不是針對(duì)特定設(shè)備平臺(tái)構(gòu)建,destination說明符可以用可選的字符串"generic/"作為前綴榛了,表明該平臺(tái)是一個(gè)一般的targeted在讶。當(dāng)沒有物理iOS設(shè)備出現(xiàn)的時(shí)候煞抬,通用的destination示例在Xcode的UI中展示destination是"Generic iOS Device"霜大。
Exporting Archives
-exportArchive選項(xiàng)指定xcodebuild應(yīng)該使用由-exportOptionsPlist指定選項(xiàng)的-archivePath指定導(dǎo)出archive。xcodebuild -help能夠打印全套可用的-exportOptionsPlist輸出革答。導(dǎo)出的產(chǎn)品將放置到-exportPath指定的路徑战坤。
Environment Variables
以下的環(huán)境變量影響xcodebuild的執(zhí)行:
XCODE_XCCONFIG_FILE 設(shè)置為文件路徑曙强,將在構(gòu)建所有target時(shí)加載并使用該文件中的構(gòu)建設(shè)置。這些設(shè)置將覆蓋所有的其他設(shè)置途茫,包括命令行中單獨(dú)傳遞的設(shè)置以及通過-xcconfig選項(xiàng)傳遞的文件中的設(shè)置碟嘴。
Exit Codes
xcodebuild退出時(shí)使用確定的代碼sysexits(3)。EX_OK表示退出成功囊卜。失敗的情況下娜扇,EX_USAGE表示任何一個(gè)選項(xiàng)格式顯示不正確,EX_NOINPUT表示找不到任何輸出文件栅组,EX_IOERR表示任何文件無法讀取或者寫入雀瓢,EX_SOFTWARE表示不常見錯(cuò)誤情況。
EXAMPLES
xcodebuild clean install | 清除build目錄玉掸;然后在xcodebuild啟動(dòng)的目錄中的Xcode工程中構(gòu)建和安裝第一個(gè)target刃麸。 |
---|---|
xcodebuild -project MyProject.xcodeproj -target Target1 -target Target2 -configuration Debug | 使用Debug配置在項(xiàng)目中構(gòu)建target1和target2. |
xcodebuild -target MyTarget OBJROOT=/Build/MyProj/Obj.root SYMROOT=/Build/MyProj/Sym.root | 在xcodebuild啟動(dòng)的目錄中的Xcode工程中構(gòu)建target MyTarget,將中間的文件放在目錄/Build/MyProj/Obj.root中并且把構(gòu)建的產(chǎn)品放在目錄/Build/MyProj/Sym.root中司浪。 |
xcodebuild -sdk macosx10.6 | 在針對(duì)macOS 10.0 SDK啟動(dòng)xcodebuild的目錄中構(gòu)建Xcode項(xiàng)目泊业。所有可用SDK的規(guī)范名稱都可以使用-showsdks選項(xiàng)查看。 |
xcodebuild -workspace MyWorkspace.xcworkspace -scheme MyScheme | 在Xcode工作空間MyWorkspace.xcworkspace中構(gòu)建scheme MyScheme啊易。 |
xcodebuild archive -workspace MyWorkspace.xcworkspace -scheme MyScheme | 在Xcode工作空間MyWorkspace.xcworkspace中Archives scheme MyScheme吁伺。 |
xcodebuild build-for-testing -workspace MyWorkspace.xcworkspace -scheme MyScheme -destination generic/platform=iOS | 在Xcode工作空間MyWorkspace.xcworkspace使用通用的iOS設(shè)備destination構(gòu)建測(cè)試和關(guān)聯(lián)targets在scheme MyScheme。命令還將測(cè)試參數(shù)從scheme寫入到構(gòu)建產(chǎn)品目錄中的xctestrun文件租谈。 |
xcodebuild test-without-building -workspace MyWorkspace.xcworkspace -scheme MyScheme -destination 'platform=iOS Simulator,name=iPhone 5s' -destination 'platform=iOS,name=My iPad' | 在Xcode工作空間MyWorkspace.xcworkspace中測(cè)試scheme MyScheme箱蝠,使用模擬器iPhone 5s最新版本的iOS。這個(gè)命令假定測(cè)試包在構(gòu)建根(SYMROOT)中垦垂。(如果shell包含空格宦搬,shell需要飲用參數(shù)或者轉(zhuǎn)義) |
xcodebuild test-without-building -xctestrun MyTestRun.xctestrun -destination 'platform=iOS Simulator,name=iPhone 5s' -destination 'platform=iOS,name=My iPad' | 測(cè)試使用iOS模擬器并且設(shè)備名稱是iPhone 5s。在MyTestRun.xctestrun指定測(cè)試包路徑和其他的測(cè)試參數(shù)劫拗。這個(gè)命令需要項(xiàng)目二進(jìn)制文件间校,不需要項(xiàng)目源代碼。 |
xcodebuild test -workspace MyWorkspace.xcworkspace -scheme MyScheme -destination 'platform=macOS,arch=x86_64' | 在Xcode工作空間MyWorkspace.xcworkspace中測(cè)試scheme MyScheme页慷,使用Xcode中描述是64-bit的destination憔足。 |
xcodebuild -exportArchive -archivePath MyMobileApp.xcarchive -exportPath ExportDestination -exportOptionsPlist 'export.plist' | 使用export.plist中指定的選項(xiàng)將archive的MyMobileApp.xcarchive導(dǎo)出到路徑ExportDestination。 |
xcodebuild -exportLocalizations -project MyProject.xcodeproj -localizationPath MyDirectory -exportLanguage zh-hans -exportLanguage es-MX | 從MyProject.xcodeproj導(dǎo)出兩個(gè)XLIFF文件到MyDirectory酒繁,包含簡(jiǎn)體中文和墨西哥西班牙語的開發(fā)語言和翻譯滓彰。 |
xcodebuild -exportLocalizations -project MyProject.xcodeproj -localizationPath MyDirectory | 從進(jìn)包含開發(fā)語言的MyProject.xcodeproj將單個(gè)XLIFF文件導(dǎo)出到MyDirectory(這種情況下已經(jīng)排除-exportLanguage參數(shù))。 |
xcodebuild -importLocalizations -project MyProject.xcodeproj -localizationPath MyLocalizations.xliff | 將本地化從MyLocalizations.xliff導(dǎo)出MyProject.xcodeproj州袒。含有問題的翻譯將會(huì)被報(bào)告揭绑,但是不會(huì)導(dǎo)入。 |
也可以查看
ibtool(1), sysexits(3), xcode-select(1), xcrun(1), xed(1)
Xcode Builds Settings Referencehttps://developer.apple.com/documentation/DeveloperTools/Reference/XcodeBuildSettingRef/