4

是否可以在 Mac OS X 中安装和切换多个版本的命令行工具?我想知道是否可以使用xcode-select,但命令行工具安装程序没有选择安装目标的选项。我尝试通过手动重命名Library/Developer/CommandLineTools然后将其传递给xcode-select. 该命令成功,但是当我尝试访问 gcc 时,我得到:

gcc: error: unable to find Xcode installation from active developer path "/Library/Developer/CommandLineTools_9.0.0", use xcode-select to change

似乎在安装整个 XCode 时这是可能的,但我不需要 XCode 并且不想安装它。我需要的只是命令行工具。

4

3 回答 3

5

我尝试做同样的事情,经过一些实验后找到了下一个解决方案。是的,这是可能的,但您需要复制/重命名整个/Library/Developer文件夹。例如:

1) 首先,我只展示我的 macOS 版本:

$ sw_vers 
ProductName:    Mac OS X
ProductVersion: 10.13.6
BuildVersion:   17G65

2) 下载并安装 Xcode 的命令行工具,例如 10b5 版本

3)创建文件夹来存放不同版本的工具:

$ mkdir ~/Project/tools
$ mkdir ~/Projects/tools/Developer10b5
$ mkdir ~/Projects/tools/Developer9.4.1

4)复制整个Developer文件夹:

$ cp -R /Library/Developer/ ~/Project/tools/Developer10b5/

5) 然后,下载并安装 Xcode 的命令行工具,例如 9.4.1 版本

6)复制整个Developer文件夹:

$ cp -R /Library/Developer/ ~/Project/tools/Developer9.4.1/

7)切换到9.4.1版本的工具,查看clang版本:

$ sudo xcode-select -s ~/Project/tools/Developer9.4.1/
$ clang --version

Apple LLVM version 9.1.0 (clang-902.0.39.2)
Target: x86_64-apple-darwin17.7.0
Thread model: posix
InstalledDir: /Users/<username>/Projects/tools/Developer9.4.1/CommandLineTools/usr/bin

8)切换到10b5版本的工具,查看clang版本:

$ clang --version
Apple LLVM version 10.0.0 (clang-1000.10.40.1)
Target: x86_64-apple-darwin17.7.0
Thread model: posix
InstalledDir: /Users/<username>/Projects/tools/Developer10b5/CommandLineTools/usr/bin
于 2018-08-03T05:13:47.627 回答
1

对于像@PaulMasri-Stone 这样有问题的人,我发现在删除以前安装的 Xcode 后(由于空间原因,我的计算机上不能安装多个版本的 Xcode),上面的方法也给了我“无效的开发人员”目录的错误。

sudo xcode-select -r我通过键入重置为默认命令行工具(并重置系统用于跟踪 SDK 位置的任何其他底层状态——以及缺少 Xcode)克服了这个问题,然后是sudo xcode-select -s /Library/Developer/CommandLineTools10.13_Xcode9.4.1. 请注意,sudo xcode-select -s /Library/Developer这对我不起作用,就像@PaulMasri-Stone 遇到的问题一样。

否则,您将需要遵循@Ilirium 指定的说明,但您只需要复制/重命名CommandLineTools目录。

于 2019-09-05T12:36:42.763 回答
0

这些说明对我有用。@PaulMasri-Stone - 我不必将 xcode 指向根目录,而是将其指向 CommandLineTools 目录,如下所示:

sudo xcode-select -s ~/projects/tools/llvm1131/CommandLineTools/

于 2021-03-31T17:51:46.043 回答