没有标准路径可以在一个系统上保留不同的XCode副本(XCode3和XCode4)。对于我的Makefile或其他基于命令行的构建过程,我正在寻找一种方法来确定特定版本的XCode的安装路径($ DEVELOPER_DIR),将此路径导出为DEVELOPER_DIR或使用xcode-select使其激活。
到目前为止,我正在尝试查询system_profiler的xml输出。
还有其他(更方便)的选择吗?
基本上我需要一个脚本来告诉系统使用Xcode3(或Xcode4)而不知道它们的安装路径。
答案 0 :(得分: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时,这将无法正常工作。
答案 1 :(得分:0)
您可以通过使用lsregister
命令查询Launch Services数据库,从命令行找到所有已安装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。
答案 2 :(得分:0)
假设名称以Xcode开头,它将在Applications文件夹中找到具有给定版本的Xcode:
for xcode in ls /Applications/Xcode*; do
if grep -q -s -E "<string>$1\.[0-9.]+</string>" "$xcode/Contents/version.plist"; then
echo "$xcode/Contents/Developer\c"
break
fi
done
将其另存为findxcode.sh,然后像这样启动:./findxcode.sh 9
,它将打印Xcode 9的路径,您可以将其放入DEVELOPER_DIR。如果需要使用其他脚本/快速通道或其他内容捕获输出,则末尾的\c
会在末尾删除新行。