Qt5找不到目标条件

BRa*_*t27 38 qt5 osx-mavericks

我刚刚更新到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"
Run Code Online (Sandbox Code Playgroud)

有谁知道如果改变这一行

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk
Run Code Online (Sandbox Code Playgroud)

从sdk 8到9会起作用吗?如果是这样,我可以在Qt5的参数中改变这个吗?

小智 81

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

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

更改以下行:

!host_build:QMAKE_MAC_SDK = macosx10.8
Run Code Online (Sandbox Code Playgroud)

对此:

!host_build:QMAKE_MAC_SDK = macosx10.9
Run Code Online (Sandbox Code Playgroud)

务必清理项目并再次运行qmake.

NIC.

  • 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"行添加到该文件就足够了,问题就解决了. (7认同)
  • 更新到Xcode 7时我必须这样做,但是使用`QMAKE_MAC_SDK = macosx10.11`. (7认同)
  • 还有一次Apple更新,Qt更改了一次:macOS Sierra的`QMAKE_MAC_SDK = macosx10.12`. (3认同)

BRa*_*t27 25

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

QMAKE_MAC_SDK = macosx10.9
Run Code Online (Sandbox Code Playgroud)

  • 这比编辑Qt发行版中的文件要好得多. (5认同)

asa*_*sam 10

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

macx {
QMAKE_MAC_SDK = macosx10.9
}
Run Code Online (Sandbox Code Playgroud)


Pab*_*iaz 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
Run Code Online (Sandbox Code Playgroud)


cee*_*eed 8

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


小智 6

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