5

没有标准路径可以在一个系统上保留 XCode(XCode3 和 XCode4)的不同副本。对于我的 Makefile 或其他基于命令行的构建过程,我正在寻找一种方法来确定特定版本的 XCode 的安装路径 ($DEVELOPER_DIR),将此路径导出为 DEVELOPER_DIR 或使用 xcode-select 使其处于活动状态。

到目前为止,我正在尝试查询 system_profiler 的 xml 输出。

还有其他(更方便)的选择吗?

基本上我需要一个脚本来告诉系统在不知道它们的安装路径的情况下使用 Xcode3(或 Xcode4)。

4

3 回答 3

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 时,这将无法正常工作。

于 2011-05-08T09:07:44.670 回答
0

您可以通过命令行查询 Launch Services 数据库,找到所有已安装 Xcode 版本的安装路径lsregister

要查找所有 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"

另请参阅此问题

于 2011-05-08T18:55:57.997 回答
0

这将在 Applications 文件夹中找到具有给定版本的 Xcode,假设其名称以 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它会打印你可以放入 DEVELOPER_DIR 的 Xcode 9 的路径。如果\c您需要使用其他脚本/fastlane 或其他内容捕获输出,则最后可以删除新行。

于 2018-10-18T12:00:26.777 回答