2011-05-08 188 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