深入淺出 Xcode Command Lines Tool(1) - 初探
Xcode命令列 = Xcode Command Lines Tool
如果你是一個iOS/Mac Developer 或是你在用Mac開發什麼壞壞的事
你一定對這個畫面不陌生,
然後我們只需要按下安裝,
之後就能繼續開發啦!
本文結束.
.
.
.
Ok, 所以…. 這個Dialog到底幫我們安裝了什麼? 安裝在哪? 為何要安裝?
安裝了什麼
如彈窗所說 命令列開發者工具 (command line developer tools),可以從Apple Developer單獨下載
有macOS SDK, LLVM編譯器, linker…等開發環境,
我們之後再來仔細地看看裡面的內容。
這裡有一篇官方對常見關於Xcode Command Line發問做的FAQ Building from the Command Line with Xcode FAQ
安裝在哪
為了得知安裝的路徑,我們使用 SuspiciousPackage 查看下載dmg裡的.pkg
哦! 所以 Command Line Tools 在mac的 唯一路徑 就是
/Library/Developer/CommandLineTools !!!
仔細看看上上張圖的描述 - 如果你是用Xcode, Xcode 是自帶 Command Line Tools的 (老的Xcode是不默認安裝的)
那放在 Xcode 的哪呢??
Xcode.app/Contents/Developer
目錄結構基本類似於安裝在 Library的目錄結構,但是多了不少東西,
我們會在之後提到他們
多份 Command Line Tools
那.. 如果說我有多份的 Xcode 哪就有多份的 Command Line Tools ?? 😱
基於目前的討論,你的 mac 開發環境可以是以下這樣的
於是就有了三連問,現在使用的是哪一個?我該用哪一個?怎麼切換成另一個?
Xcode-Select
To answer your question. I bring you
xcode-select
作為一個command指令,名稱還是挺淺顯易懂的,也許你並不陌生。來讓我們敲個 man xcode-select
瞅瞅👀
描述內容簡述如下
xcode-select 管理著 xcode的Developer Directory
你能輕鬆得使用 xcode-select –switch 在多個版本的Xcode之間切換對應的開發工具路徑,
而這些路徑將被用於 xcrun, xcodebuild, cc …
xcrun, xcodebuild,這又釣出了許多熟悉不過的指令,我們一樣後面說。
xcode-select用法:
-s <path>, --switch <path>
:- 將路徑指向某個Command Line Tools, ex:
xcode-select --switch /Applications/Xcode.app
- 將路徑指向某個Command Line Tools, ex:
-p, --print-path
:- 打印目前指向的路徑, ex:
/Applications/Xcode.app/Contents/Developer
- 打印目前指向的路徑, ex:
-r, --reset
:- 將之前用-s 指定的路徑重置, (筆者是指回application裡的xcode)
--install
:- 彈出安裝Command Line Tools視窗,對 還是它
上面描述提到xcodebuild..等指令用的環境是基於xcode-select指向的路徑,xcode-select提供了一個環境變量,讓你能臨時使用其他環境來執行xcode command.
1 | env DEVELOPER_DIR="/Applications/Xcode-beta.app" /usr/bin/xcodebuild |
xcode-select的好處
有了這個機制,我們就能同時擁有多個開發環境,不同的Swift版本, 不同的模擬器版本…而我們編譯的指令不需要用 /Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild
只需要統一用 xcrun xcodebuild
。
xcode-select in Xcode
你可以在 Xcode -> Preference -> Locations 去選擇自己得 Command Line Tools,
在這裡選擇 效力等同於 xcode-select, 所以也是需要user密碼。
為何要安裝 Command Line Tools
現在你知道 command Line Tools ‘大概是哪些東西’, ‘放在哪些地方’
當然你可能也已經知道許多tool的用途,例如很熟悉的xcodebuild,
但既然我都從頭講了,就講全一點 😅😅
For Xcode
就像大部分的軟件一樣,我們看到的,操作的都是軟件的GUI,而Xcode的底層對應的就是Command Line Tool,
例如按下 Build鍵 => xcodebuid …, 開一台模擬器 => simctl …,當然這些都不是一對一的映射,而是多個command 的組合。
我們之後會介紹幾個常見的組合。
For others
然而就算你不是使用Xcode開發,還是會碰到需要安裝Command Line Tools的情況(也就是使用安裝在/Library/Developer/CommandLineTools的那組),因為Tools也有包含整個MacOS的SDK還有編譯器Clang甚至包括Make。
例如有使用Homebrew在管理package的一些python開發或是js的開發,都會提示需要Xcode Command Line Tools.
Futher More
現在我們知道 Command Line Tools 是什麼,安裝在哪,以及Command Line Tools 有多個。
之後的一系列文章我會來介紹 Command Line Tools裡,確切包含了哪些命令列工具
–
深入淺出 Xcode 命令列(1) - 初探
深入淺出 Xcode 命令列(加餐) - libxcselect.dylib