我正在编写一个从Xcode路径运行clang的工具。这个工具通过运行/ usr / bin / xcode-select来获取Xcode的位置,但是我想重新制作它以便它直接从磁盘读取Xcode位置而不是运行xcode-select。我试图调试xcode-select(这是xcrun的符号链接),但是没有设法找到它如何存储/读取Xcode的位置(它是否将它存储在环境或文件中?)。如果您知道如何在不运行xcode-select(和xcrun)的情况下获取Xcode的位置,请帮忙!提前谢谢!
答案 0 :(得分:2)
使用NSWorkspace,您可以执行以下操作:
[NSWorkspace sharedWorkspace]fullPathForApplication:@"Xcode"];
在安装在默认位置时返回/Applications/Xcode.app
。
// …or, as I have seen in the documentation, there's also
- (NSURL *)URLForApplicationWithBundleIdentifier:(NSString *)bundleIdentifier
// which returns the URL for the application with the specified identifier.
答案 1 :(得分:2)
使用dtruss命令打印xcode-select的所有打开的系统调用。
dtruss -f -t open xcode-select -print-path
发现,它尝试读取/ usr / share / xcode-select / xcode_dir_path并从那里获取Xcode位置。如果它不存在,则采用默认的Xcode位置,即/Applications/Xcode.app /.
答案 2 :(得分:1)
从Xcode 6开始,该位置是/var/db/xcode_select_link
处的符号链接。您可以使用命令readlink /var/db/xcode_select_link
将链接的目标输出到终端。如果没有链接(例如,您运行xcode-select --reset
),则使用默认的xcode安装。