fatal error: 'TargetConditionals.h' file not found

Qt编译时出现错误:fatal error: 'TargetConditionals.h' file not found 

解决方法一:(QMAKE_MAC_SDK要看当前电脑的系统版本)

找到文件: /users/***/Qt/5.*/clang_64/mkspecs/qdevice.pri 

修改下面一行代码

!host_build:QMAKE_MAC_SDK = macosx10.8

为:

!host_build:QMAKE_MAC_SDK = macosx10.9

    Qt5.6时这个文件发生了变化,qdevice.pri 文件内容如下:


    GCC_MACHINE_DUMP=x86_64-apple-darwin14.5.0


    改为:(macosx10.11 为当前Mac的操作系统的版本)


    GCC_MACHINE_DUMP=x86_64-apple-darwin14.5.0


    !host_build:QMAKE_MAC_SDK=macosx10.11

    按此方法修改可能并不能解决此问题,这时可以用下面的方法尝试


解决方法二:

    按上述方法修改后还是报这个错误,这时可以如下这么改:

    由于问题出现的原因是找不到SDK(假如这个SDK是iPhoneOS.8.3.SDK),我们可以进入到xcode包内,找到/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk,然后制作此SDK的替身,并命名为iPhoneOS.8.3.SDK; 如果还不行,就复制此SDK并重命名为iPhoneOS.8.3.SDK,这样的话就能解决此问题(但会额外占用存储空间)

(5.9中编译库时无论是否选真机还是模拟器库,都会连接模拟器的SDK,也致使出现这个问题);和方法2类似,在模拟器SDKs文件夹中复制一份编译时连接的SDK(若找不到这个SDK)

通过gcc -v 可以查看 GCC_MACHINE_DUMP 的值
bogon:/ nmlhm$ gcc -v
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/c++/4.2.1
Apple LLVM version 8.1.0 (clang-802.0.42)
Target: x86_64-apple-darwin16.7.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

uname -a  查看内核版本号


解决方法三:

出现这个错误时,通常还伴随有其他问题如:

Project WARNING: You need to update Xcode to version 7 or newer to support bitcode

此警告在qmake时出现,

clang: warning: no such sysroot directory: '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk' [-Wmissing-sysroot]

此警告在编译时出现(不一定就是8.3的SDK,以8.3为例);

fatal error: ‘TargetConditionals.h’ file not found

此错误出现时编译停止,原因就是上面的警告,找不到对应的SDK

解决:修改 /Users/***/.qmake.stash(在用户目录下) 文件; 查看此文件可以看到QMAKE_XCODE_VERSION = 6.3.2 ,将此版本号改为如9.1,第一个警告就可以消除; 然后搜索8.3的SDK,找到相关配置,将iPhoneOS8.3.sdk改为iPhoneOS.sdk,这样就查找的是当前xcode的默认SDK,不至于乱找,弄错了路径; 模拟器的SDK也要找到替换掉,这样就可以消除掉第二个警告。 路径对了fatal error: ‘TargetConditionals.h’ file not found错误也就没了

你可能感兴趣的:(Qt,for,iOS,/,Android)