Qt5找不到目标条件

时间:2014-09-19 18:36:38

标签: osx-mavericks qt5

我刚刚更新到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 个答案:

答案 0 :(得分: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。

答案 1 :(得分:25)

也可以通过将以下行添加到.pro文件

来编译项目
QMAKE_MAC_SDK = macosx10.9

答案 2 :(得分:10)

如果您在OS X之外的其他平台上进行编译,那么BRabbit27解决方案的改进将是:

macx {
QMAKE_MAC_SDK = macosx10.9
}

答案 3 :(得分:9)

我刚刚升级到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

答案 4 :(得分:8)

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

答案 5 :(得分:6)

我发现文件&#34; .qmake.cache&#34;在我的项目根中有一个对Mac OS 10.8的引用。 解决方案是删除文件并从头开始构建项目。

答案 6 :(得分: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

我希望它适合你。

答案 7 :(得分:3)

对我来说,手动删除输出目录内容修复了问题(Qt 5.9,Xcode9,MacOS 10.12.6)。清洁/重建确实留下了一些腐败的东西。

答案 8 :(得分:0)

对于Qt 5.8和iOS版本,我在XCode文件夹中添加了指向sdk的符号链接:

cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs
ln -s iPhoneOS.sdk iPhoneOS10.0.sdk

cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs
ln -s iPhoneSimulator.sdk/ iPhoneSimulator10.2.sdk

答案 9 :(得分:0)

我在macosx10.13上使用Qt5.8,我通过添加以下行来编辑文件/usr/local/Cellar/qt-legacy-formula/5.8.0_1/mkspecs/qdevice.pri解决了这个问题: / p>

!host_build:QMAKE_MAC_SDK = macosx10.13

答案 10 :(得分:0)

我只是想通过添加我的经验对此发表评论。我最近更新到High Sierra,XCode 9.2和Qt5.10,XCode许可证消息让我感到沮丧!

在qdevice.pri中我改变了

QMAKE_MAC_SDK = macosx

QMAKE_MAC_SDK = macosz10.13

但这不是我所需要的全部。我不得不从构建目录中删除.qmake.stash和Makefile文件。我不确定是否需要删除Makefile,但无论如何我都是这样做的。然后我删除了* .pro.user文件,以便我可以通过QtCreator强制重新配置。这迫使我或让我选择更新的Qt版本。在此之前我认为它试图使用旧版本的东西。因此,清除所有对项目中旧内容的引用并选择新内容非常重要。

答案 11 :(得分:0)

方法1

每次升级Xcode时都会出现此类错误

因此您可以在构建之前删除qt中的缓存文件,或者在收到错误时删除

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

rm {your project folder}/.qmake.stash

如果您不知道在哪里找.qmake.stash,请尝试

find ~ -name .qmake.stash

方法2

不推荐,因为使用Xcdoe APP时可能会出现构建错误

的iPhoneOS

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

iPhoneSimulator

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