Qt Creator - 项目错误:Xcode设置不正确。您可能需要通过运行 /usr/bin/xcodebuild 确认许可协议。

123
我刚刚安装了Qt 5.5,并在OS X上首次使用Qt Creator。当我第一次安装Qt时,它给了我一个错误消息:“未安装Xcode 5”,这让我感到奇怪(我有Xcode 7 beta),但是安装还是成功完成了。
现在,当我启动或打开项目时,我收到以下错误:
“Project ERROR:Xcode没有正确设置。您可能需要通过运行/usr/bin/xcodebuild来确认许可协议。”
当我在终端中运行/usr/bin/xcodebuild时,我得到以下结果:
“xcode-select: error: 工具'xcodebuild'需要Xcode,但活动开发者目录'/Library/Developer/CommandLineTools'是命令行工具实例。”
我不确定Xcode与Qt Creator有什么关系,除非它涉及访问跨平台兼容性的库,但是否有方法解决此问题?

3
请注意:对于Qt 5.7.1和Xcode 8.2.1,@rudolf-ratusinski提供的答案完美地完成了工作。已接受的答案无效。 - Alexey Kamenskiy
@rudolf-ratusinski的答案在Xcode 11.2.1上仍然有效。 - AJC
8个回答

279

>= Xcode 8

在 Xcode 8 及以上版本中,正如 Bruce 所说,当 Qt 尝试查找xcrun时,实际上应该查找xcodebuild

打开文件:

Qt_install_folder/5.7/clang_64/mkspecs/features/mac/default_pre.prf

替换:

isEmpty($$list($$system("/usr/bin/xcrun -find xcrun 2>/dev/null")))

随着:

isEmpty($$list($$system("/usr/bin/xcrun -find xcodebuild 2>/dev/null")))

~> Xcode 8

Xcode 8之前,如果在安装Xcode后安装了命令行工具,则会出现此问题。这是因为Xcode-select开发者目录被指向了/Library/Developer/CommandLineTools

使用以下命令将Xcode-select指向正确的Xcode开发者目录:

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

使用以下命令确认许可协议:

Confirm the license agreement with the command:

sudo xcodebuild -license

这将提示您阅读许可协议。

输入agree以接受条款。


4
我收到了错误信息:xcode-select: error: invalid developer directory '/Applications/Xcode.app/Contents/Developer'。 - Mohammed Rafeeq
14
在使用Xcode 8时出了问题。我按照这些说明接受了许可证,但仍然遇到了相同的错误。 - Violet Giraffe
11
对于那些想知道安装文件夹在哪里的人:它将取决于您的软件包管理器的设置:Homebrew是/usr/local/Cellar/qt55,MacPorts是/opt/local/libexec/qt5(-mac)。 - yogodoshi
3
在使用Homebrew时,安装了Ruby Capybara gem所需的Qt@5.5之后,我在以下路径找到了相关的default_pre.prf文件:/usr/local/Cellar/qt@5.5/5.5.1/mkspecs/features/mac/default_pre.prf。我也尝试过Rudolf Ratusiński的方法,虽然能够帮助我解决初始问题,但随后出现了很多我之前未遇到的错误信息,而使用这种方法则没有。 - Ben Hocking
1
@Ricardo Stuven 我打开了文件"default_pre.prf",但发现该行已经设置正确。然后我尝试使用xcode-select -switch命令,但出现了"无效的开发者目录错误"。 - Dev M
显示剩余4条评论

84
如果您更改 Qt_install_folder/5.7/clang_64/mkspecs/features/mac/default_pre.prf 的内容,则仅适用于桌面工具包,而不适用于模拟器等。 更好的方法是创建符号链接:
cd /Applications/Xcode.app/Contents/Developer/usr/bin/
sudo ln -s xcodebuild xcrun
所以您不需要更改所有目标的 .prf 文件。

3
当xcrun使用xcodebuild不支持的参数时(如缺少参数-f),这将在后续引起问题。 - mrAlmond
3
这似乎是一个qt问题。因此,我认为在xcode分发中添加一个持久的符号链接比更改Qt配置文件更加危险,因为后者将被Qt 5.7.1替换。 - ALoopingIcon
1
不要这样做,会搞乱我的 iPhone 应用项目。 - Chchwy
1
我太早点赞了,结果被锁定了... 我遇到了参数-f的问题。 - BuvinJ
1
删除它的命令为: sudo rm /Applications/Xcode.app/Contents/Developer/usr/bin/xcrun - Daniel Georgiev
显示剩余3条评论

27

这样就可以搞定了:

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

在您的终端中运行此命令。


适用于Xcode8,比其他步骤更容易。谢谢! - Misha
已确认在macOS Sierra 10.12.4和Xcode 8上运行正常 - 谢谢! - Dylan Pierce
1
这仍然可以在macOS High Sierra 10.13.5上使用Xcode 9.4.1 - 谢谢! - d1jhoni1b
已确认此方法适用于macOS Catalina 10.15.2和Xcode 11.3。 - RNickMcCandless

12

对于使用Xcode 8的用户,有另一个问题。在Qt 5.7.1发布之前,可以查看此处的临时解决方案:

https://forum.qt.io/topic/71119/project-error-xcode-not-set-up-properly

总结一下:

在文本编辑器中打开 Qt_install_folder/5.7/clang_64/mkspecs/features/mac/default_pre.prf,并将其替换为以下内容:

isEmpty($$list($$system("/usr/bin/xcrun -find xcrun 2>/dev/null"))))

使用此方式:

isEmpty($$list($$system("/usr/bin/xcrun -find xcodebuild 2>/dev/null")))

5

如果你使用XCode 8.x从源代码构建Qt,你需要在文件qt-everywhere-enterprise-src-5.7.0/qtbase/configure的第551行更改"-find"参数,使其如下所示:

if ! /usr/bin/xcrun -find xcodebuild >/dev/null 2>&1; then

3

安装完整版的Xcode并同意条款,然后使用xcode-select --reset解决了问题。

基本上问题是你指向的xcode /Library/Developer/CommandLineTools不允许你接受条款和条件。所以在安装和重置位置后,一切应该没问题了。


1

对我来说,正确工作的唯一方法是在有关xcrun的行上使用'#'进行注释:

# Make sure Xcode is set up properly
#isEmpty($$list($$system("/usr/bin/xcrun -find xcrun 2>/dev/null"))): \
    #error("Xcode not set up properly. You may need to confirm the license agreement by running /usr/bin/xcodebuild.")

在文件:Qt_install_folder/5.7/clang_64/mkspecs/features/mac/default_pre.prf 中


-2

为了在很多旧答案的基础上增加一点内容,以“这对我有用”为精神, 我发现通过启动Xcode,登录我的开发者帐户(只是一个免费的帐户),然后在“位置”中设置命令工具, 我可以让

'sudo /usr/bin/xcodebuild -license agree'

起作用。也就是说,它在命令行中启动了一个同意过程,我在仔细阅读了所有14亿页的内容之后同意了。

我没有必要编辑任何东西。

我的系统是Mojave 10.14.6和Xcode 10.3(10G8)。


如果你要否定一个答案,至少有礼貌地给出一些提示为什么! - nerak99

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