写 Qt Quick 工程,最让人窝火的不是 QML 语法报错,而是新建项目那一刻,Qt Creator 甩你一句"Kit 缺失"或者"No suitable kit found"。明明 Qt 装好了,版本也看着没问题,就是灰着"下一步"按钮不让你点。这篇东西我结合自己这些年折腾 Qt 开发环境的实际经历,把 Kit 缺失的来龙去脉、排查顺序和手动配置方法一次讲清楚,照着做基本能解决问题。
1. 先搞清楚"Kit 缺失"到底缺了什么
1.1 一个完整 Kit 由哪些零件组成
很多新手把 Kit 理解成"Qt 版本",这是最大的误会。在 Qt Creator 里,Kit(构建套件)是编译器、Qt 版本、调试器、CMake 或 qmake、以及针对特定设备的系统根路径这五样东西的集合体。只有这些零件全部就位且互相匹配,Qt Creator 才能顺利调用它们去编译你的 Qt Quick 工程。
打个比方,Kit 就像一条完整的汽车生产线:编译器是车间的机床,Qt 版本是原材料规格,CMake 或 qmake 是装配流程,调试器是质检仪器。机床没接电、原材料型号不对、装配流程缺失,生产线就转不起来。Qt Creator 之所以报"Kit 缺失",通常就是因为机床(编译器)或者装配流程(构建工具)在系统里没找到,或者找到了但和原材料规格(Qt 版本)不匹配。
具体来说,一个 Kit 通常由以下部分组成:
- 编译器:负责把 C++ 源码变成机器码。Windows 上常见的是 MinGW 的 g++ 或者 MSVC 的 cl.exe。
- Qt 版本:你安装的 Qt 库的位置,比如 C:\Qt\6.5.3\mingw_64,这里面包含了完整的 Qt 模块和头文件。
- CMake 或 qmake:负责生成构建规则的构建工具。Qt 6 默认用 CMake,Qt 5 及以下通常用 qmake。
- 调试器:配合 IDE 做断点调试的工具,Windows 上通常是 GDB 或 CDB。
- 设备类型和系统根路径:用于交叉编译到其他平台时指定目标系统的信息。
任何一个零件缺失、路径指向错误、或者位数不匹配(32 位编译器搭配 64 位 Qt),Qt Creator 都会判定这个 Kit 不可用。它宁可把你拦在创建工程的门外,也不会让你用一套不完整的工具链蒙混过关,否则后面编译期的错误会更多。
1.2 为什么 Qt Quick 工程比普通 C++ 工程更容易踩 Kit 坑
同样一台机器,创建普通 C++ 空项目也许能蒙混过关,创建 Qt Quick 工程却经常卡在 Kit 选择上。原因在于 Qt Quick 工程对工具链的完整性要求更苛刻。Qt Quick 涉及 QML 引擎、OpenGL 图形抽象层和一系列运行时组件,编译过程需要完整匹配的 Qt 模块。
你在创建向导中如果选了 Qt Quick 模板,Qt Creator 在校验 Kit 时会额外检查图形相关模块是否可用。某些时候一个 Kit 虽然显示黄色感叹号,还允许你建普通项目,但建 Qt Quick 项目时就变成红色叉号了。这也是"为什么别人能建我不能建"的原因之一:别人的 Qt 安装勾选了完整的图形模块和对应编译器,而你的安装路径里有残缺。
另一个常见情况是编译器缺失。很多人图省事安装 Qt 时只选了 Qt 库本体,把编译器部分漏掉了。Qt 官方安装器的图形界面上,MinGW 编译器在 Tools 目录下默认是打勾的,但如果你手动取消了它,或者安装时没注意展开 Tools 节点,装完就只有 Qt 库而没有编译器。这样 Kit 缺了最核心的编译器,自然创建不了任何工程。
1.3 Kit 缺失的典型表象你要先认清
在动手排查之前,先辨别你遇到的是哪一类表象,这决定了排查方向。我总结了三类最常见的情况:
- 创建工程时"Kit selection"页空荡荡,一个可用的 Kit 都没有,系统提示 No suitable kit found。
- 打开已有项目时自动选择的 Kit 显示红叉,右下方构建按钮灰色不可点。
- Kit 列表里有 Kit,但名称前面带黄色感叹号,而且你点击它之后提示编译器和 Qt 版本不匹配。
第一类表象说明 Qt Creator 在自动检测阶段什么都没找到,大概率是编译器没装或者路径配置指错位置;第二类表象是能检测到 Kit,但某个关键组件失效,比如 Qt 版本路径变了,之前 D 盘的 Qt 被挪到 C 盘,Qt Creator 没自动更新路径;第三类表象是典型的版本不匹配问题,比如拿 MinGW 32 位编译器搭配 64 位 Qt 库,或者 Qt 6.5 要求 CMake 3.16 以上而系统装了更老的 CMake。
看清表象之后,接下来就是针对性地排查和配置。
2. 创建工程前后的环境自查与组件确认
2.1 安装 Qt 时的勾选清单是你少走弯路的前提
我有一次为了省时间,在安装 Qt 时只勾了某个版本号和 Qt Creator 本体,装完傻眼了,创建工程的界面干净得像张白纸。所以先说安装勾选这件事。安装 Qt 时,左侧的筛选器里选择你需要的 Qt 版本,比如 6.5.3,但在展开它之前,务必检查 Developer and Designer Tools 这一大类下的组件。
以 Windows 平台为例,当前主流的组合是:
- Qt 6.x 版本本体(如 Qt 6.5.3)下的 MinGW 64-bit 或 MSVC 64-bit 模块。
- Tools 分类下的 MinGW 编译器(版本号和你选的 Qt 模块一致)。
- Tools 分类下的 CMake 和 Ninja(Qt 6 官方推荐)。
- Tools 分类下的 GDB 调试器(与 MinGW 配套的版本)。
如果你选了 MinGW 的 Qt 模块,却没有勾 Tools 下的 MinGW 编译器,那结果就是最常见的编译器缺失问题。微软的 MSVC 编译器则不在 Qt 安装器里,需要单独安装 Visual Studio 的 C++ 生成工具或完整 VS。安装 VS 之后,Qt Creator 一般能自动检测到 MSVC 编译器。
具体勾选建议我列一下,避免遗漏:
- Qt 版本模块:例如 6.5.3 下的 MinGW 64-bit,这是 Qt 库的核心模块。
- Qt Creator:必须装,这是 IDE 本体。
- Tools 下的 MinGW:编译器本体,版本号必须和 Qt 模块的 MinGW 对应,比如 Qt 6.5.3 要求 MinGW 11.2.0。
- Tools 下的 CMake:Qt 6 构建系统默认使用。
- Tools 下的 Ninja:配合 CMake 使用的新式构建工具,编译速度更快。
- Tools 下的 GDB:调试器。
上面这些如果都打勾,你至少有了一套"官方自洽"的完整工具链。这套组合下,Qt Creator 在安装完成后首次启动的自动检测阶段基本能识别出可用的 Kit,创建 Qt Quick 工程大概率不会卡在缺 Kit 上。
2.2 编译器选型:MinGW 还是 MSVC
Windows 平台上选编译器是个绕不开的问题。MinGW 是 GNU 编译器套件在 Windows 上的移植版,优点是不需要额外装庞大的 IDE,Qt 安装器自带,离线也能装,日常开发够用,生成的可执行文件依赖较少的运行时,方便拷贝出去。MSVC 是微软的编译器,需要安装 Visual Studio,但编译出的程序在 Windows 上的性能和兼容性通常更优,某些依赖 Windows SDK 特定功能的模块只有 MSVC 版本可用。
从 Kit 配置的角度看,不同类型编译器对应的启动方式是两套:MinGW 要直接指向 g++ 可执行文件,MSVC 则要先在 Qt Creator 里设置 Visual Studio 的安装路径,编译器路径一般不直接手动指定,而是通过 VS 的安装信息自动导入。如果你想让 Qt Creator 自动检测出可用的 Kit,建议在一台机器上只保留一种主用的编译器体系,不要同时装 MinGW 和 MSVC,否则 Kit 列表会乱,自动检测也可能选错默认编译器。
2.3 CMake 与 qmake:Qt 6 时代的选择题
Qt 6 开始官方默认转向 CMake,qmake 还在但已不做主要推荐。这意味着你创建 Qt Quick 工程时,构建系统如果选 qmake,部分新版模板可能直接不提供,或者在 Kit 校验时要求额外的 qmake 路径配置。
在 Qt Creator 中,每个 Kit 需要指定 CMake 或 qmake 的位置。自动检测时,Qt Creator 会找你 PATH 环境变量里的 cmake.exe 和 qmake.exe。如果你的 Qt 安装路径不在系统 PATH 里,或者 CMake 是事后单独装的,Qt Creator 有可能只检测到 Qt 库而检测不到构建工具。
一个实用的做法是:打开 Qt Creator 后进入 Options 界面的 CMake 页,确认列表里有没有系统自动找到的 cmake.exe。如果列表为空,点击 Add 手动指定 CMake 可执行文件路径。同样地,进入 Qt Versions 页面确认 Qt 库路径是否已被识别。这些检查和 Kit 列表一样重要,因为 Kit 缺构建工具时你在创建工程页面看到的同样是"Kit 缺失"。
3. Kit 手动配置与工程创建实操
3.1 从零开始的完整 Qt 6 环境搭建顺序
与其在配置错误的泥潭里越陷越深,不如直接从零来一套干净的环境。下面是我验证过很多次,在一台新 Windows 机器上配 Qt 6 Qt Quick 开发环境的完整顺序,每一步都附上选择的理由。
第一步,安装 Qt。用官方安装器,在选择组件时勾选 Qt 6.5.3 下的 MinGW 64-bit、Tools 下的 MinGW 11.2.0、CMake、Ninja、GDB。安装目录建议直接用默认的 C:\Qt,不要装在带中文或空格的路径下。某些 Qt 模块对路径中的空格敏感,虽然现代版本改善了很多,但没必要冒这个险。
第二步,安装完成后先不急着新建工程,打开 Qt Creator,进入 Edit 设置页面确认一下自动检测结果。路径是 Tools、Options、Kits。在 Kits 页面你会看到 Qt Creator 自动收集的各类编译器和 Qt 版本信息。正常情况下这里应该已经有一个名为"Qt 6.5.3 MinGW 64-bit"的 Kit,编译器、Qt 版本、CMake 三行都有值。如果这个 Kit 存在且没有感叹号,直接用它建工程即可。
第三步,如果自动检测失败,或者 Kit 有条目但显示不完整,点击页面底部的 Add 手动构建一个 Kit。在出现的界面里设置名称,比如"我的MinGW套件",然后依次选择编译器 C 和 C++ 为 g++,Qt 版本为 6.5.3 MinGW 64-bit,CMake 为安装目录下的 cmake.exe,调试器为 gdb.exe。所有项目填完保存,Kit 列表里就会出现一个可用的 Kit。
第四步,打开环境变量检测一下路径里是否有中文字符或不存在的路径,这会影响命令行的基本执行。把 C:\Qt\Tools\mingw1130_64\bin 和 C:\Qt\Tools\CMake_64\bin 加入系统 PATH,重启 Qt Creator 让环境变量生效。
走完上面四步,Qt Creator 里应该至少有一个完全可用的 Kit 了。
3.2 用配置好的 Kit 创建第一个 Qt Quick 工程
现在进入实操环节,从新建工程开始走一遍完整的流程。打开 Qt Creator,点击 New Project,在左侧选择 Application,然后选 Qt Quick Application (Prototype)。这个模板比空工程多了一个最小的 QML 文件,适合用来验证环境是否真正跑通了。
在选择构建系统的页面,Qt 6 下默认是 CMake,直接保持默认。之后进入 Kit 选择页,这时候你应该能看到刚才配置的 Kit 是可选状态。如果 Kit 前面有黄色感叹号,鼠标悬停它,系统会提示具体缺什么组件。如果提示是编译器缺失,回到 Kits 页面检查编译器路径;如果提示是 Qt 版本无效,回到 Qt Versions 页面重新指定 qmake.exe 路径。正常情况下,选好 Kit 点下一步,填好工程名和存放路径,然后点击 Finish。
创建完成后,Qt Creator 会自动进行一次 CMake 配置。你可以在界面右下角看到构建状态。之后点击左侧的运行按钮,Qt Creator 会调用你选择的 Kit 编译整个工程。第一次编译需要一点时间,因为 CMake 要生成构建文件、编译 C++ 源码、最后运行 qml 场景。看到窗口弹出来、界面正常显示一个空白的 QML 页面时,说明这个工程从创建到运行已经打通了。
编译过程中如果弹出"无法解析外部符号"或者"找不到 xxx.dll"之类的错误,多半是 Kit 里的某个组件路径配错了。不要急着改代码,优先回看 Kit 配置。
3.3 三个命令行验证命令,帮你定位 Kit 问题在哪个环节
有些 Kit 问题 Qt Creator 的图形界面里提示得不够清楚,用命令行验证反而是最快的定位手段。打开一个终端窗口,依次运行三个命令,看它们的输出是否符合预期。
qmake --version如果系统能找到 qmake,会输出类似 QMake version 3.1,后面带 Qt 版本号。如果提示"不是内部或外部命令",说明 Qt 的 bin 目录不在环境变量 PATH 里,或者装的是 Qt 6 的某些不带 qmake 的嵌入式版本。这条命令验证的是 Qt 版本本体是否可用。
g++ --version这条验证的是编译器是否存在。输出应该是一段版本信息,比如 g++ (MinGW.org GCC Build-2) 9.2.0。如果找不到 g++,说明 MinGW 编译器没装或没加入 PATH。而 Qt Creator 的自动 Kit 检测依赖这套 PATH,这条命令的结果可以直接反映编译器缺失的问题。
cmake --version这条验证的是 CMake 构建工具是否可用。Qt 6 构建系统离不开它。输出类似 cmake version 3.24.1 这样。如果你用的是 Qt 6.5 以上版本但 CMake 版本过低,Qt Creator 会提示 CMake 版本不满足最低要求。
三个命令的输出都正常,至少说明工具链基本没问题。剩下的 Kit 校验 Qt Creator 会自动完成。如果任何一条命令失败,按对应方向排查路径和环境变量即可。
4. 高频踩坑与排查技巧实录
4.1 常见 Kit 问题速查表
我整理了一张速查表,覆盖了实际项目里最常遇到的 Kit 相关报错和对应解法。这张表来自我多次帮同事排查问题的经验,基本能覆盖 70% 以上的常见情况。
| 现象 | 根因 | 解决步骤 |
|---|---|---|
| Kit 列表为空 | Qt 安装时未勾选编译器 | 运行 Qt 安装器,补装 Tools 下的 MinGW 或安装 Visual Studio |
| Kit 有黄色感叹号 | 编译器路径失效或 Qt 库路径变更 | 进入 Kits 页面重新指定编译器路径或 Qt 版本路径 |
| 提示 CMake 无法找到 | CMake 未安装或不在 PATH | 安装 CMake 并加入 PATH,或在 Kits 页面手动指定 cmake.exe |
| 提示 Qt 版本无效 | qmake.exe 路径错误 | 在 Qt Versions 页面重新添加含 qmake.exe 的目录 |
| 编译报错找不到 lg | 系统缺少 OpenGL 相关库 | 安装对应图形库,或在 Qt 安装器中补装 OpenGL 相关模块 |
| 64 位 Qt 配 32 位编译器 | Qt 模板和编译器位数不一致 | 统一为 64 位组合,或重新安装对应位数的 Qt 模块 |
| 打开旧项目 Kit 全红 | 项目文件里写死的 Kit 序号已失效 | 在项目管理页面手动重新选择可用的 Kit |
| MinGW 版本和 Qt 要求不匹配 | Qt 某版本要求特定 MinGW 版本 | 对照官方文档安装要求的 MinGW 版本 |
这张速查表的核心思路还是"拆零件":一个 Kit 五个零件,逐个确认哪个失效就补哪个。绝大部分问题是编译器缺失和路径漂移,少部分出在 Qt 版本本身位数或模块选错上。
4.2 三个最容易被忽略的细节,踩过的人都沉默了
细节一:Qt 安装目录里出现了缓存残留。有时候卸载 Qt 再重装新版本,老的 qmake.exe 或 CMake 缓存还在,Qt Creator 自动检测时会报告到一个旧的 Qt 版本路径,导致你新建的 Kit 表面上指向新 Qt 版本,实际上编译器还引用着老路径。处理办法是:卸载 Qt 后把 C:\Qt 目录手工删干净,或者装新版本时换一个目录名,比如 C:\Qt2,让 Qt Creator 彻底失去旧缓存,强制重新检测。
细节二:环境变量 PATH 里的顺序问题。PATH 里如果同时存在 Qt 的 bin 目录和其他编译器的 bin 目录,命令行和 Qt Creator 可能优先调用其中某一个。比如系统里已经有 Python 或 Ruby 自带的 GCC,你再把 Qt 的 MinGW 加到 PATH,两个 g++ 会冲突。解决办法是只让一种编译器体系出现在 PATH 中,或者把 Qt 的 MinGW bin 放在 PATH 最前面,确保 shim 机制先找到它。
细节三:Qt Creator 首次启动时没联网导致自动检测不完整。有些离线安装包或首次启动时网络受限,Qt Creator 的 Kit 自动检测模块不会去扫描系统中新安装的编译器。这个问题的表现很隐蔽:明明装好了,Qt Creator 就是看不到。解决方法是关掉 Qt Creator 重新打开一次,或者在设置页面手动触发"刷新"按钮。
上面这三个细节我在实际中还真的都遇到过。第一个是常见的装机历史残留问题,第二个是 Windows 环境变量顺序的经典坑,第三个在网络隔离环境下装 Qt 很常见。每次帮人排查 Kit 问题,我都会先问一句系统 PATH 怎么写的,再问 Qt 安装路径有没有历史残留,往往能省掉很多无谓的点击操作。
4.3 如果手动配置完还是不行,试试重置 Qt Creator 配置
有些时候,Kit 列表里的配置太混乱了,手动改不如直接重置整个 IDE 的配置来得利落。Qt Creator 的设置存放在用户目录下的一个配置文件夹里,Windows 上一般在 %APPDATA%\QtProject。如果你经过反复调整仍然被 Kit 问题困扰,而且项目里没有极度自定义的快捷键或代码样式需要保留,可以试试这个办法。
操作步骤是先退出 Qt Creator,备份 QtProject 文件夹,然后删除整个 QtProject 目录。重启 Qt Creator 后,它会像第一次安装那样运行初始化向导,重新扫描编译器、Qt 版本和 CMake。只要你的工具链本身是完整的,这个操作大概率能让你重新得到一个干净可用的 Kit 列表。
我自己的经验是,这个方法适合那些"做过几百次尝试但越改越乱"的场景。相比耗费大量时间一个个核对路径,重置配置往往十分钟就解决问题。唯一要提醒的是,重置会清掉 Qt Creator 的全局设置在下载别人分享的项目时记得先导出自己的设置或做好备份。
4.4 一个我用来快速验证 Kit 是否可用的老办法
创建正式的 Qt Quick 工程之前,先创建一个最精简的 Qt Widgets 应用来验证 Kit。这听起来好像绕远了,但这个思路真的能帮你把问题焦点缩小。步骤如下:新建项目时选择 Application 下的 Qt Widgets Application。如果这个最简单的工程能用目标 Kit 编译并弹出窗口,说明工具链本身没问题,问题出在 Qt Quick 相关的特定模块或图形配置上。如果连 Widgets 工程也编译不了,问题就出在工具链本身,回到 Kits 页面做组件排查。
我用这个方法多次定位到问题在 Qt Quick 模块缺失或 OpenGL 环境异常上,而不是单纯的编译器问题。Widgets 工程用不到 QML 引擎和图形渲染抽象层,能编译 Widgets 工程只能证明基础工具链 OK,但 Qt Quick 还需要细查图形相关配置。反过来说,Widgets 工程都编译不了,就别浪费时间去折腾 Qt Quick 了。
这个验证思路虽然不是官方文档里的标准做法,但在实际交流群里帮很多人节省过排查时间。新手遇到 Kit 缺失往往在 Qt 安装器和 Kits 页面反复折腾,而老手直接先建一个 Widgets 项目把问题二分定位。
5. 从 Kit 缺失延伸出来的 Qt Quick 工程避坑建议
5.1 工程路径和文件名中的特殊字符要避开
Kit 配好了,工程也创建出来了,但编译期还是会冒出一堆奇奇怪怪的报错。排查到最后发现,往往是工程路径里有中文字符或空格。Qt 的工具链对路径中的特殊字符友好程度参差不齐,MinGW 对中文路径的支持已经比以前好很多,但 MSVC 和某些 Qt 模块仍然会在包含中文或空格的路径下出问题。
这属于 Kit 配置之外的"工程创建规范化"问题,但在实际开发中确实会以 Kit 相关报错的形式出现。比如你创建的 Qt Quick 工程路径是 D:\我的项目\测试Demo,在 Qt Creator 里构建时可能报"Cannot open file"之类的错误。建议统一用纯英文路径存放工程,内部目录也不要出现空格和中文。
我在公司里遇到过不止一次同事因为项目路径带了中文,Qt Quick 工程编译期报一些毫无头绪的错误,最后把文件夹改名为英文,编译就顺利通过了。这件事说小不小,说大也不大,但它直接影响你能否顺利跑通第一个 Qt Quick 工程。
5.2 版本号配套是长期稳定开发的保障
Kit 缺失的核心根源,十有八九是"版本配套"出了问题。Qt 版本、编译器版本、CMake 版本这三者有一套配套关系,任意一环不对,Kit 就不可用。
Qt 6.5 搭配的 MinGW 版本是 11.2.0,搭配的 CMake 最低版本是 3.16,但我实际测试中 CMake 3.22 以上编译 Qt Quick 工程项目更稳定。Qt 6.2 搭配的是 MinGW 11.2.0,而 Qt 5.15 搭配的是 MinGW 8.1.0。网上很多人下载了新版 Qt,却沿用旧版开源社区的 MinGW,结果 Kit 一直报版本不匹配。
具体核对方法很简单:打开 Qt 安装器,在已安装的组件列表里看 Qt 版本号旁边的工具链说明。或者打开 Qt 官方发布说明页面,里面明确写了每个版本对应的工具链版本要求。我在配置环境时,都是先选定 Qt 大版本,再选官方推荐对应的 MinGW 版本,最后装配套的 CMake 和 Ninja。这套组合所有版本号都是官方验证过的,Kit 基本不会出问题。
5.3 长期角度:使用 CMake 预设文件规范 Kit 选择
项目规模上来以后,团队多人开发时 Kit 混乱的问题会放大。每个人本地的 Qt 路径不同、编译器版本不同,提交到代码库的 CMake 文件不同会导致别人打开工程时 Kit 全部红叉。这时候可以引入 CMake 预设文件来规范构建配置。
具体做法是在工程根目录下添加 CMakePresets.json 文件,里面定义不同平台下的配置预设,包括编译器路径、CMake 选项和生成器类型。Qt Creator 新版本会读取这个文件,自动配对预设和本地环境。这样团队协作时,每个人打开工程后 Qt Creator 能根据预设自动找到合适的工具链,Kit 缺少的问题会大幅缓解。
文件的大致格式可以这样写:
{ "version": 3, "configurePresets": [ { "name": "windows-base", "displayName": "Windows Base", "generator": "Ninja", "binaryDir": "${sourceDir}/build/${presetName}", "cacheVariables": { "CMAKE_C_COMPILER": "gcc", "CMAKE_CXX_COMPILER": "g++" } } ] }我这里只写了骨架,实际使用时要根据你本地的编译器路径填对应的值。CMake 预设的好处是把构建参数和 IDE 界面解耦,Qt Creator 能自动读取并匹配 Kit,省去手动选择步骤。环境越复杂越值得用。
6. 我踩过 Kit 缺失坑之后的三点心得体会
第一点体会:Kit 缺失不是玄学,是配置管理问题。它和编码能力无关,纯粹是工具链装配这件事没做好。把 Kit 拆成编译器、Qt 版本、CMake、调试器四个零件,逐个验证,问题一定能定位。我见过太多人在群里咨询这个报错,其实自己电脑里有完整工具链,只是 Qt Creator 没告诉他路径而已。
第二点体会:官方安装器的默认勾选能不动就别动。很多人安装 Qt 时,看到 Tools 下的 MinGW 编译器目录被展开,误以为那是多余的,主动取消打勾。结果就是缺编译器。官方把那些工具和 Qt 库放在一起是有原因的,它们就是用来组成 Kit 的标准零件。减少自己对默认勾选的主观改动,Kit 问题自动少一半。
第三点体会:环境的"干净"程度决定了你的开发效率。一个历史残留多、PATH 混乱、多个编译器版本并存的系统,即使你这次解决了 Kit 缺失,下次还会遇到构建系统冲突的问题。不如痛下决心重装一次干净的 Qt 环境,把工具链理顺,一劳永逸。
判断你的环境是否"干净",一个简单标准是:当你运行 qmake --version、g++ --version、cmake --version 三条命令时,输出都应指向你的 Qt 安装目录下对应的可执行文件,而不是系统某个犄角旮旯里的旧版本。如果输出里有任何一条指向了想不到的位置,就说明环境不干净,迟早会出问题。