我刚刚更新到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的参数中改变这个吗?
答案 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