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错误也就没了

fatal error: gpio.h file not found 这个错误信息通常出现在编译嵌入式系统代码时,特别是在开发基于Linux的系统,如树莓派或其他使用GPIO(通用输入输出)接口的硬件平台时。这个错误表示编译器无法找到GPIO相关的头文件。 解决这个问题通常需要以下几个步骤: 1. 确认GPIO头文件的路径:不同的嵌入式Linux发行版,GPIO相关的头文件可能位于不同的路径。例如,在某些系统中,它可能位于`/usr/include/linux`目录下,而在另一些系统中可能有所不同。 2. 设置正确的包含路径:在编译你的程序时,需要确保编译器知道GPIO头文件的位置。这可以通过修改编译命令,添加`-I`参数来指定包含目录来实现。例如,如果GPIO头文件位于`/usr/local/include`,则可以这样编译代码: ```bash gcc -o myprogram myprogram.c -I/usr/local/include ``` 3. 安装开发文件包:有时候,如果你没有安装相应的GPIO库或者开发包,也会导致找不到头文件。你可以使用包管理器安装这些开发包。例如,在基于Debian的系统(如树莓派的Raspbian)上,可以使用以下命令安装: ```bash sudo apt-get install libraspberrypi-dev ``` 这将安装树莓派的GPIO开发库。 4. 使用完整的包含路径:如果你在编译时使用了相对路径或者没有指定包含路径,也可能导致找不到头文件。确保在代码中使用完整的包含路径,如: ```c #include <linux/gpio.h> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值