2011-05-08 187 views
4

沒有標準路徑在一個系統上保留XCode(XCode3和XCode4)的不同副本。對於我的Makefile或其他基於命令行的構建過程,我正在尋找一種方法來確定特定版本的XCode的安裝路徑($ DEVELOPER_DIR),將此路徑導出爲DEVELOPER_DIR或使用xcode-select使其激活。按版本查找Xcode安裝路徑

到目前爲止,我正在試圖查詢system_profiler的xml輸出。

有沒有其他(更方便)選項?

基本上我需要一個腳本來告訴系統在不知道安裝路徑的情況下使用Xcode3(或Xcode4)。

+0

好問題。我已經玩過'pkgutil(1)',但Xcode本身似乎沒有包裝收據,儘管一些相關的包裝可以。 – 2011-05-08 08:00:04

回答

1

這裏就是我想出迄今:

DEVELOPER_DIR=`system_profiler SPDeveloperToolsDataType -xml |\ 
xpath "//*[text()='spdevtools_version']/following-sibling::string[starts-with(text(),'3')]/../*[text()='spdevtools_path']/following-sibling::string[1]/text()"` 

這臺DEVELOPER_DIR到Xcode3的安裝路徑。對於Xcode4,只需將'3'替換爲'4'

當安裝多個版本的XCode3時,將無法按預期工作。

0

通過使用lsregister命令查詢啓動服務數據庫,您可以從命令行找到所有已安裝的Xcode版本的安裝路徑。

要查找所有Xcode3安裝路徑,運行:

/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -dump | grep --before-context=2 "com.apple.Xcode" | grep --only-matching "/.*\.app" 

要查找所有Xcode4安裝路徑,運行:

/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -dump | grep --before-context=2 "com.apple.dt.Xcode" | grep --only-matching "/.*\.app" 

也看到這個question

+0

太好了。一個小故障是,這也發現最近安裝的網絡捲上的XCode安裝。 – tonklon 2011-05-09 06:34:30

+0

以下Xcode 5上的作品 '/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -dump | grep -i --before-context = 3「com.apple.dt.Xcode」| grep - 只匹配「/.* \。app」' – 2013-11-14 19:08:54