解决QT:may not produce code compatible with the Qt version

5 篇文章 0 订阅
文章描述了在QtCreator中遇到的构建套件警告问题,主要是由于C++编译器的ABI与Qt版本不兼容。提供了两种解决方案:一是克隆套件并修改默认编译器;二是直接编辑配置文件toolchains.xml,确保C和C++编译器的ABI一致。修改后需重启QtCreator以应用更改,但这种方法可能因QtCreator更新而失效。
摘要由CSDN通过智能技术生成

问题

在Qt Creator的构建套件(Kit)中,自动检测的Kit很多都会有黄色的叹号,可以把鼠标移动到上面可以看到有警告,是各种各样的警告,有些是调试器没设置,有些是名字不唯一,有些是C编译器或者C++编译器没配置。这里遇到的问题是:

Warning: The compiler “MinGW-w64 MINGW64 C++ (MSYS2)” (x86-windows-msys-pe-64bit) may not produce code compatible with the Qt version “Qt 6.2.0 (mingw64)” (x86-windows-msys-pe-64bit).

在这里插入图片描述
从下图可以看到,C编译器,C++编译器,调试器以及CMake都是配置了的:
在这里插入图片描述

根据警告提示,可以知道是编译器有问题,看看编译器的情况,从上图可以知道编译器是使用的MinGW-w64 MINGW64的C/C++编译器,如下图所示:

在这里插入图片描述

我们选中MinGW-w64 MINGW64的C编译器可以到ABI是x86-windows-msys-pe-64bit,再看看C++的编译器,发现是自定义,问题就出在这里,需要统一为x86-windows-msys-pe-64bit,但是这里修改不了,需要修改配置才行。

在这里插入图片描述

解决办法一

选中只有该问题的套件,然后克隆一个套件,这时就可以编辑C/C++编译器了,选中MinGW的C/C++编译器然后设置为默认,后面构建时都使用这个套件来构建。

在这里插入图片描述

解决办法二

Qt检测这些配置都是配置在文件中的,以MSYS2的MinGW64为例,Qt Creator的配置都放在:/mingw64/share/qtcreator下,而构建套件、Qt版本、编译器、调试器、CMake这些的配置都在:/mingw64/share/qtcreator/QtProject/qtcreator下。

在这里插入图片描述

  • cmaketools.xml:CMake工具的配置,主要是CMake工具的路径、显示的名称、以及ID
  • debuggers.xml:调试器的配置,主要是每个调试器的路径、显示的名称、以及ID
  • qtversion.xml:Qt版本的配置,主要是每个版本的名称、路径、设备类型(是桌面、安卓、IOS等)
  • toolchains.xml:工具链,即C/C++编译器的配置,主要是每个编译器的路径、支持的ABI、目标的ABI、显示的名称、ID、语言(C/Cxx)
  • profiles.xml:构建套件(Kit)配置,主要是每个套件的名称、套件ID、CMake的名称、调试器的ID、设备类型、C/C++编译器ID、Qt信息等

选中要修改的套件,把名称全部复制下来,在profiles.xml中去查找
在这里插入图片描述

有两条匹配的记录,其实就是Qt 5.15.8(shared)以及Qt 6.5.0(shared)的

在这里插入图片描述

然后找到C/C++的编译器ID配置,通过前面的分析,是C++的编译器有问题:

在这里插入图片描述

复制ProjectExplorer.ToolChain.Mingw:M2_MinGW-w64_MINGW64_CXX,在toolchains.xml中去找,如下图所示,可以看到C++编译器支持的ABI是MINGW64-windows-msys-pe-64bit,而C编译器支持的ABI是x86-windows-msys-pe-64bit,这就导致C++编译器显示的ABI是自定义,我们需要改成与C编译器一致的ABI,改为x86-windows-msys-pe-64bit,保存即可。

在这里插入图片描述

关闭Qt Creator,再重新打开,查看构建套件,前面的黄色叹号不存在了。
在这里插入图片描述

这样的修改会有一个问题就是这些文件都是由SDKTool生成的,如果有更新或者重新安装Qt Creator可能会导致失效,需要再重新修改。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值