深入淺出 Xcode Command Lines Tool(1) - 初探

Xcode命令列 = Xcode Command Lines Tool

如果你是一個iOS/Mac Developer 或是你在用Mac開發什麼壞壞的事

你一定對這個畫面不陌生,

截圖 2019-11-13 下午3.44.55

然後我們只需要按下安裝,

截圖 2019-11-13 下午4.25.41

之後就能繼續開發啦!

C1DB1108-AE40-4B01-A717-DD59733E2FD6

本文結束.
.
.
.

Ok, 所以…. 這個Dialog到底幫我們安裝了什麼? 安裝在哪? 為何要安裝?

安裝了什麼

如彈窗所說 命令列開發者工具 (command line developer tools),可以從Apple Developer單獨下載

截圖 2019-11-13 下午4.40.53

有macOS SDK, LLVM編譯器, linker…等開發環境,

我們之後再來仔細地看看裡面的內容。

這裡有一篇官方對常見關於Xcode Command Line發問做的FAQ Building from the Command Line with Xcode FAQ

安裝在哪

為了得知安裝的路徑,我們使用 SuspiciousPackage 查看下載dmg裡的.pkg

CommnadLineToolsForXcode.dmg - pkg

哦! 所以 Command Line Tools 在mac的 唯一路徑 就是

/Library/Developer/CommandLineTools !!!

仔細看看上上張圖的描述 - 如果你是用Xcode, Xcode 是自帶 Command Line Tools的 (老的Xcode是不默認安裝的)

Command Line Tools

那放在 Xcode 的哪呢??

Xcode.app/Contents/Developer

目錄結構基本類似於安裝在 Library的目錄結構,但是多了不少東西,

我們會在之後提到他們

多份 Command Line Tools

那.. 如果說我有多份的 Xcode 哪就有多份的 Command Line Tools ?? 😱

Well yes

基於目前的討論,你的 mac 開發環境可以是以下這樣的

commandLineToo

於是就有了三連問,現在使用的是哪一個?我該用哪一個?怎麼切換成另一個?

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
      • commandLineToo
  • -p, --print-path:
    • 打印目前指向的路徑, ex: /Applications/Xcode.app/Contents/Developer
  • -r, --reset:
    • 將之前用-s 指定的路徑重置, (筆者是指回application裡的xcode)
  • --install:
    • 彈出安裝Command Line Tools視窗,對 還是它
    • 截圖 2019-11-13 下午3.44.55

上面描述提到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密碼。

截圖 2019-11-14 下午4.18.14

為何要安裝 Command Line Tools

現在你知道 command Line Tools ‘大概是哪些東西’, ‘放在哪些地方’

當然你可能也已經知道許多tool的用途,例如很熟悉的xcodebuild,
但既然我都從頭講了,就講全一點 😅😅

For Xcode

commandLineTool

就像大部分的軟件一樣,我們看到的,操作的都是軟件的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

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×