Qt5目标条件未找到。

38

我刚刚更新了OS X Mavericks中命令行工具的最新版本,现在编译我的(之前正常工作的)代码时会抛出以下错误

> clang: warning: no such sysroot directory:
> '/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk'
> In file included from ../QtOpenGL/Main.cpp:1: In file included from
> ../../Qt/5.3/clang_64/lib/QtWidgets.framework/Versions/5/Headers/QApplication:1:
> In file included from
> ../../Qt/5.3/clang_64/lib/QtWidgets.framework/Versions/5/Headers/qapplication.h:45:
> In file included from
> /Users/BB/Qt/5.3/clang_64/lib/QtCore.framework/Headers/qcoreapplication.h:45:
> In file included from
> /Users/BB/Qt/5.3/clang_64/lib/QtCore.framework/Headers/qglobal.h:76:
> /Users/BB/Qt/5.3/clang_64/lib/QtCore.framework/Headers/qsystemdetection.h:196:12:
> fatal error: 'TargetConditionals.h' file not found
> #  include <TargetConditionals.h>
>            ^ 1 error generated. make: *** [Main.o] Error 1 20:29:52: Le processus "/usr/bin/make" s'est terminé avec le code 2. Erreur lors
> de la compilation/déploiement du projet QtOpenGL (kit : Desktop Qt
> 5.3.0 clang 64bit) When executing step "Make"

有人知道如果更改这一行会发生什么吗?

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk

从SDK 8到9可以工作吗?如果可以,那么我应该在Qt5的参数中更改哪些内容?

12个回答

81

供其他人参考,我通过编辑平台的mkspec文件解决了这个问题:

/users/nic/Qt/5.3/clang_64/mkspecs/qdevice.pri

更改以下行:

!host_build:QMAKE_MAC_SDK = macosx10.8

变成这样:

!host_build:QMAKE_MAC_SDK = macosx10.9

请务必清理您的项目,并重新运行qmake。

Nic。


7
在OSX 10.10.2(Yosemite)上,Qt 5.4和xcode 6.1.1存在类似的问题。但是,Qt / 5.4 / clang_64 / mkspecs / qdevice.pri文件中没有像上面那样的行。然而,在该文件中添加以下行 QMAKE_MAC_SDK = macosx10.9 就足够解决问题了。请注意不要改变原文的意思,并使翻译通俗易懂。 - ALoopingIcon
7
当我更新到 Xcode 7 后,我必须使用 QMAKE_MAC_SDK = macosx10.11 做同样的事情。 - Algebraic Pavel
升级到El Capitan后,我还不得不使用macosx10.11。 - Boy
3
又一次苹果更新,又一次Qt更改:QMAKE_MAC_SDK = macosx10.12 适用于macOS Sierra。 - AivanF.
如果你在 Git 克隆 Qt 源代码,那么文件路径是 qt5/qtbase/mkspecs/qdevice.pri,其中 qt5 是 Git 根目录。 - Carson Ip
显示剩余2条评论

25

也可以通过在.pro文件中添加以下行来编译该项目

QMAKE_MAC_SDK = macosx10.9

5
这是比在Qt发行版内编辑文件更好的解决方案。 - gavinb
1
对我没用...?使用10.13 QMAKE_MAC_SDK = macosx10.13 - Albin Stigo
@AlbinStigo 我自从使用 OS X 10.9 以来就没有使用过 Qt,所以我不能保证这仍然有效。你尝试过其他建议的解决方案吗?如果它们都不起作用,你应该尝试联系 Qt 的支持或在 SO 上提出另一个问题,指定 OS X 10.13 ;) 祝你好运 - BRabbit27
@BRabbit27 是的,第三个答案有效(将此行添加到另一个文件中)。你的解决方案应该更好。我可能会提交一个错误报告。 - Albin Stigo
这是一个部分正确的答案。在最近的macOS迭代中,问题在于系统会删除旧的SDK符号链接,因此您必须手动修复,就像我在https://dev59.com/1l8e5IYBdhLWcg3wPYdA#46416172中所解释的那样。 - Pablo D.

10

如果您在除了macOS之外的其他平台上编译,则BRabbit27解决方案的改进方法如下:

macx {
QMAKE_MAC_SDK = macosx10.9
}

10

我刚刚升级到 XCode 9,然后在 macOS Sierra (10.12) 上遇到了这个问题。问题是 Xcode 把默认的符号链接移到了 10.13。要解决:

cd /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs
sudo ln -s MacOSX.sdk MacOSX10.12.sdk

1
非常感谢您抽出时间在这里回答问题!它将帮助很多人,当他们向下滚动时...您能详细说明一下您是如何发现这个问题的吗?为什么苹果会做出这样的事情... - Boy
1
谢谢,希望这个能够得到更高的认可。至少对于Mac来说,这是最新的答案。 - Luke Murray
1
是的,这解决了我的问题。它是由于更新Xcode到9版本引起的。 - Maroš Beťko
1
感谢您提供这些信息! - Alan

8

在Qt 5.5和MacOS 10.10.4中遇到了同样的问题。我从项目目录中删除了.qmake.conf和.qmake.stash文件。


非常感谢,你让我免于尝试其他答案中的任何黑客技巧! - Thorbjørn Lindeijer

6
我发现在我的项目根目录中的文件“.qmake.cache”引用了Mac OS 10.8。 解决方案是删除该文件并从头开始构建项目。

3

我在安装Xcode 10.13之前安装了Qt 5.9.1。自从我升级了Xcode之后,出现了以下警告的错误信息。

:-1: warning: no such sysroot directory: '/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk' [-Wmissing-sysroot]

我修改了以下行以解决该问题。
QMAKE_MAC_SDK = macosx

为了

QMAKE_MAC_SDK = macosx10.13

在以下文件中:
path_where_I_installed_qt/Qt/5.9.1/clang_64/mkspecs/qdevice.pri

我希望这对你有用。


这个有效。那一行本来没有,但我加上去了,现在它有效了。 - Albin Stigo

3

对我来说,手动删除输出目录的内容解决了这个问题(Qt 5.9,Xcode9,MacOS 10.12.6)。清理/重构确实留下了一些损坏的东西。


0

方法一

每次升级Xcode时都会出现这种错误。

因此,在构建之前,您可以在qt中删除缓存文件,或者在出现错误时直接删除。

rm {your target build folder}/.qmake.stash

或者

rm {your project folder}/.qmake.stash

如果你不知道在哪里找到.qmake.stash,可以尝试以下方法:

find ~ -name .qmake.stash

方法二

不建议使用,因为在使用Xcode APP时可能会出现构建错误。

iPhoneOS

cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/
sudo ln -s iPhoneOS.sdk iPhoneOS{version}.sdk

iPhone模拟器

cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/
sudo ln -s iPhoneSimulator.sdk iPhoneSimulator{version}.sdk

0

我正在macOS 10.13上使用Qt5.8,通过编辑文件/usr/local/Cellar/qt-legacy-formula/5.8.0_1/mkspecs/qdevice.pri并添加以下行来解决此问题:

!host_build:QMAKE_MAC_SDK = macosx10.13

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