在Mavericks操作系统上安装了命令行工具后无法使用xcodebuild

93

我已安装了命令行工具:

$ xcode-select --print-path
/Library/Developer/CommandLineTools

然而,当任何东西尝试使用xcodebuild时,我会收到以下错误信息:

$ /usr/bin/xcodebuild
xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance

在Mountain Lion上,可以在不安装完整的Xcode情况下使用此功能,而只需安装命令行工具。 在Mavericks上是否也可以这样做?我该如何让它起作用?

注意:这是在干净的Mavericks安装上。

更新:只是为了说明,我已经安装了命令行工具:

$ gcc --version
Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 5.0 (clang-500.2.79) (based on LLVM 3.3svn)
Target: x86_64-apple-darwin13.0.0
Thread model: posix

1
在构建一些节点模块时遇到了同样的问题。希望能够快速找到解决方法。 - rossipedia
我在 node-gyp 上创建了一个问题,因为这是我的问题的源头: https://github.com/TooTallNate/node-gyp/issues/341 - user1082754
也许你需要安装Xcode。这是我的gcc --version的样子: Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/c++/4.2.1 Apple LLVM version 5.0 (clang-500.2.79) (based on LLVM 3.3svn) Target: x86_64-apple-darwin13.0.0 Thread model: posix - Martin Christmann
1
也许你是对的,只是奇怪的是,在安装了命令行工具的Mountain Lion上不需要这样做。 - user1082754
我假设您已经执行了 xcode-select --install 命令。安装 Xcode 后,xcode-select --print-path 命令会打印出 /Applications/Xcode.app/Contents/Developer - mb21
9个回答

65

我知道这是一个晚回答,但在我的情况下,这个命令解决了问题:

sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer

16
请注意,该问题涉及使用命令行工具进行构建安装。通过切换到Xcode.app,您将通过Xcode进行构建(这正是该问题试图避免安装的内容)。 - bryanmac

23

看起来OSX已经更改了xcodebuild,现在需要安装XCode,以前只需安装OSX命令行工具即可正常使用。

旧的半相关答案

许多人在使用Node时遇到了这个问题。Node的构建工具 gyp 使用 xcodebuild 对编译 Node 包进行准备。Mavericks 更改了 xcodebuild 的行为,因此它不再与 gyp 正常工作。目前正在修复此问题。 请参阅 node-gyp 问题

一旦这些更改已部署至NPM,您将能够安装新的node-gyp软件包并正确编译。一旦这些变化被纳入NPM中,还需要更新您的NPM版本。


不知道为什么这与Node有关,我正在尝试使用Xcode构建其他东西。 - zinking
尽管如此,当您从命令行调用xcodebuild时,它仍会出现错误...实际上,我已经从苹果开发者网站https://developer.apple.com/downloads/index.action#下载了最新的命令行工具。 - alexserver

16
请先打开Finder,然后从左侧面板选择“应用程序”,接着寻找 Xcode,检查其名称是否为 Xcode 或 Xcode-Beta。
如果名称为 Xcode-Beta,则在终端中输入以下命令:
sudo xcode-select -switch /Applications/Xcode-Beta.app/Contents/Developer

如果名称是Xcode,则输入以下命令:
sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer

希望这个答案能够对使用Xcode Beta版本的用户有所帮助。谢谢。

9

这个问题是由于xcode-select的developer directory指向了/Library/Developer,该目录只包含CommandLineTools文件夹。因此,错误信息抱怨的不是目录与Xcode不同。

两种经过测试的解决方案:

  1. (Re) Install Xcode.

  2. Point xcode-select to the Xcode Developer Directory using the following command:

    sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer
    

参考资料:

如何解决“xcode-select: error: tool ‘xcodebuild’ requires Xcode, but active developer directory”错误 * 链接失效 *

xcode-select激活的开发者目录错误


链接1已损坏。 - user10063119

2
我从 App Store 重新安装了 Xcode,问题得以解决。我猜测我之前的安装不完整。

1

在Xcode的“偏好设置”>“位置”中,还有一个GUI可用于更改命令行工具路径:

Xcode > Preferences > Locations

我刚升级到Xcode 10.3,但同时保留了一个旧版本10.2.1的副本在Applications的子文件夹中。当我打开这个位置面板时,命令行工具的选择项是空白的,但我可以在已安装的两个版本之间进行选择:

Command Line Tools selection dropdown

如果GUI选项可用,我倾向于使用它而不是从SO复制sudo命令。


0
如果您使用的是XCode2: sudo xcode-select --switch /Applications/Xcode\ 2.app/Contents/Developer 注意要使用“\”来转义空格。

0
今天我遇到了这个问题,问题是我使用的是手动安装的Xcode,并且文件名为Xcode8.3.2.app而不是Xcode.app。重命名应用程序解决了xcode-select抱怨的问题。这似乎表明常规应用程序名称在其搜索路径上,但变体不在。

-3
据我所知,Mavericks 中的命令行工具安装在 /Applications/Xcode.app/Contents/Developer 中,这似乎意味着需要 Xcode。这可能是一个未公开的功能。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接