ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Qt6安装后环境配置全攻略:从Kit到CMake一梭子搞定

Qt6安装后环境配置全攻略:从Kit到CMake一梭子搞定 装完 Qt6 之后真正的问题才开始。这句话我每次写环境配置教程时都要强调。很多朋友下载 Qt6 在线安装包一路点“下一步”界面也装上了然后新建项目、选编译器、点运行结果弹出一堆红色错误——找不到编译器、找不到 qmake、Kit 不可用。其实这不怪你Qt6 安装器的默认勾选往往偏保守安装完也不会主动帮你把环境变量、编译器、构建套件Kit全部串起来。这篇文章就是打算把 “Qt6 安装后的环境配置” 这件事彻底讲明白从安装包选型、目录结构、环境变量到 Qt Creator 里 Kit 配好、再到 VS Code/CLion 接入最后附上我踩过的坑和排查思路。无论你是刚接触 Qt 的 0 基础小白还是从 Qt5 迁过来的老用户这套流程照着走一遍基本能少走一整周的弯路。1. 装完 Qt6 之后真正的问题才开始1.1 “安装完成”的错觉装好不等于能编译Qt6 的安装器分在线安装和离线安装绝大多数人用的是在线安装包。安装器本身做得挺友好但它的逻辑是“我只负责把文件放到你指定的目录”至于这些文件能不能被编译器找到、能不能被系统识别它并不负责。道理就像你把一堆食材买回家不代表立刻能开饭——你得洗、切、搭配有时候还得先把锅刷干净。安装完成后你打开 Qt Creator新建一个 Qt Widgets Application默认界面弹出来看着好像一切正常。但真的点一下左下角的绿色三角运行按钮问题就冒出来了。最常见的是提示 “No suitable kit found” 或者 Kit 后面带着红色警告图标。提示找不到编译器compiler或者编译器是 Manual 状态但没关联到 Qt 版本。构建时提示 “Could not find qmake” 或 “Qt version is not properly installed”。这些问题的根源只有一个Qt6 的程序文件已经到位但编译器、调试器、构建工具CMake/Ninja、qmake 路径没有在 Qt Creator 内部完成关联。所以“环境配置”并不是简单的设置一个环境变量而是要把整条工具链打通。1.2 先搞清楚自己的开发目标再动手在动手配置之前我建议你先停下来想一个问题你要用 Qt6 做什么这个问题的答案直接决定了你该选哪套编译器和组件。举个例子如果你只是学 Qt Widgets传统桌面窗口程序那 MinGW 版本完全够用配置也最简单。如果你要搞 QML/Qt Quick 开发或者会用到 WebView、多媒体模块那需要考虑的组件就更多一些。如果你在公司里跟已有的 MSVC 项目对接那基本上只能选 MSVC 工具链并且要单独安装 Visual Studio 的 C 开发组件。这里我把 Qt6 开发场景粗略分三类场景推荐工具链额外组件需求难度Qt Widgets 桌面应用学习MinGW 64-bit基本没有低QML/Qt Quick 应用MinGW 或 MSVCQt Quick、QML 相关模块中企业级/嵌入现有 MSVC 工程MSVC 2022Windows SDK、MSVC 编译器偏高搞清楚自己的目标再装能避免你装了一堆用不到的组件又把系统 PATH 搞乱。我见过一个朋友为了跑一个 hello world把 Qt6 所有组件全勾上了结果装完 40 多个 GB配置的时候还到处冲突。没必要。2. 安装包怎么选Qt6 组件与工具链的取舍2.1 在线安装时该勾哪些组件在线安装 Qt6 时你会遇到若干个可展开的节点Qt 6.x.x、Additional Libraries、Developer and Designer Tools。很多人直接就点“Next”这样默认组件往往只有 3 到 4 个不够用。我的建议是至少按下表来勾Qt 6.x.x 节点下如果你的开发目标以 Widgets 为主勾选 MinGW 11.2.0 64-bit具体版本看你安装器显示的版本。如果要走 CMake 路线MinGW 版本的 Qt 自带 CMake 配合很好。如果公司要求 MSVC勾选 MSVC 2019 64-bit 或 MSVC 2022 64-bit但前提是你机器上装了对应版本的 Visual Studio。Additional Libraries 节点下Qt Multimedia、Qt Charts、Qt Data Visualization 这类按需勾选。Qt WebEngine 体积特别大非必要不要装部署时还容易踩 dll 缺失的坑。Developer and Designer Tools 节点下勾选 Qt CreatorIDE 本体、CMake、Ninja、MinGW 11.2.0 64-bit、Debugging Tools。这些工具如果缺失后续配置工具链会非常难受。为啥要单独强调勾 MinGW 编译器因为 Qt6 默认不会把自己捆绑的编译器当成“系统编译器”你要是不勾 MinGW后面就算装了 Qt6新建项目时也会发现 Kits 列表里是空的。这个坑几乎每个新手都会踩一次。2.2 安装后的目录结构和关键路径安装完成之后建议先花两分钟看看目录结构。以 Windows 为例默认安装目录是C:\Qt里面长这样C:\Qt ├─ 6.5.2 │ ├─ mingw_64 │ │ ├─ bin │ │ ├─ include │ │ ├─ lib │ │ ├─ mkspecs │ │ ├─ lib\cmake │ │ └─ ... ├─ Tools │ ├─ CMake_64 │ ├─ Ninja │ ├─ mingw1120_64 │ └─ QtCreator └─ ...6.5.2\mingw_64这个目录就是 Qt6 的核心里面bin存着qmake.exe、moc.exe、uic.exe等工具lib存放库文件和模块lib\cmake下则是给 CMake 使用的 Qt6Config.cmake 等配置文件。后续很多环境配置都要围绕这个目录写路径。Tools\mingw1120_64是编译器本体g.exe、gcc.exe、gdb.exe都在里面。注意如果你用的是 MinGW 版的 Qt6编译时我用的是 Qt 自己捆绑的这个 MinGW不是你之前单独下载的某个 MinGW-w64 版本混用不同品牌的 MinGW 会造成 ABI 兼容问题这个我在第 6 部分会再提。还有一点非常重要安装路径绝对不要带中文和空格。C:\Qt没问题但你要是装到C:\我的工具\Qt 6后续 CMake、Ninja、qmake 在处理路径时极容易出现莫名其妙的错误。我的建议是老老实实用C:\Qt或D:\QtSDK这类纯英文字符路径。如果你是用命令行安装器自己指定路径也可以。但不管怎么装都要确保这条路径是稳定的不要今天在 C 盘、明天挪到 D 盘因为 Qt Creator 里保存的很多配置都是绝对路径挪位置之后你会挨个重新配一遍。3. 环境变量配置与命令行验证3.1 Windows 下需要配置哪些环境变量很多教程一上来就让你配一大堆环境变量实际上对 Qt6 来说最关键的就两个一个是QTDIR一个是Path。QTDIR是一个自定义变量让 Qt 工具和脚本知道你的 Qt 安装位置。以 6.5.2 版本为例在系统环境变量里新建一个变量变量名QTDIR变量值C:\Qt\6.5.2\mingw_64接着在Path变量里追加三个路径C:\Qt\6.5.2\mingw_64\bin C:\Qt\Tools\mingw1120_64\bin C:\Qt\Tools\CMake_64\bin C:\Qt\Tools\Ninjabin路径让系统能找到qmake.exe、Qt6Core.dll等运行时文件。MinGW 的bin路径让系统能找到g.exe、mingw32-make.exe等编译器工具。CMake 和 Ninja 的路径虽然不是绝对必须但如果你在 Qt Creator 之外使用 CMake这个很有用。具体操作右键“此电脑” → 属性 → 高级系统设置 → 环境变量。在“系统变量”里编辑Path点击“新建”把上面的路径逐条加进去。如果你之前装过 Qt5检查一下Path里有没有指向旧版本 Qt5 的bin路径有的话建议删掉否则可能出现 Qt6 和 Qt5 的 DLL 被混用的问题这种问题排查起来非常头疼。3.2 打开命令行验证配置是否生效环境变量配完之后记得重新打开一个终端窗口新开的窗口才会加载新的环境变量依次敲下面几条命令qmake --version如果输出类似于QMake version 3.1 Using Qt version 6.5.2 in C:\Qt\6.5.2\mingw_64说明 qmake 路径正确。再验证编译器g --version正常情况下会显示g (x86_64-posix-seh-rev1, Built by MinGW-W64 project)这样的信息。最后验证 CMakecmake --version这条命令不是必须的但如果你之后打算在 Qt Creator 之外用 CMake 构建 Qt 项目建议提前确认。看到这些输出环境变量这块就基本没问题了。有人会问qmake --version输出了但 Qt Creator 里 Kit 仍然不可用怎么办这说明 Qt Creator 不认识这个 qmake 的路径需要到 IDE 里手动配一次这就是下一节的内容。3.3 环境变量配置的常见坑先说一个 Windows 环境下特别经典的问题你配置完环境变量但命令行里敲qmake还是提示“不是内部或外部命令”。90% 的情况是因为终端窗口没有重新打开。Windows 的环境变量新窗口才会刷新老窗口还是旧上下文。另一个坑是 PATH 里有多个 Qt 版本。我之前见过一台机器同时有 Qt 5.15.2 和 Qt 6.5.2Path 里C:\Qt\5.15.2\mingw_81_64\bin排在前面导致qmake --version显示的永远是 5.15.2。这种就属于典型的“环境变量顺序错误”。解决办法是让较高优先级的目录排在前面或者干脆删除旧版本路径只在需要时手动调用旧版本的工具。Linux 环境下的话配置思路完全一样只是变量变成了LD_LIBRARY_PATHexport QTDIR/opt/Qt/6.5.2/gcc_64 export PATH$QTDIR/bin:$PATH写进~/.bashrc后记得source ~/.bashrc刷新一次。注意 Linux 下 Qt6 的编译器通常直接用系统自带 GCC不需要另外配 MinGW所以后面的 Kit 配置会比 Windows 简单一些。4. 在 Qt Creator 中完成工具链与 Kit 配置4.1 打开 Qt Creator 后先看“Kits”面板环境变量配好只是第一步真正决定能否编译运行的关键在 Qt Creator 的 Kits 设置。打开 Qt Creator进入“工具” → “选项” → “Kits”你会看到类似这样的界面左侧是编译器、调试器、Qt Version、CMake 四个选项卡中间是 Kits 列表。Kit 就像一台“配置好的车”。编译器是发动机调试器是仪表盘qmake 或 CMake 是变速箱逻辑Qt Version 是这辆车使用的零件标准。你只装了发动机但没把变速箱挂上车自然跑不起来。进入“Qt Versions”选项卡点击“Add”选择C:\Qt\6.5.2\mingw_64\bin\qmake.exe。如果路径正确它会自动识别版本号显示6.5.2。如果你之前已经手动配置过这里应该能看到一条记录。切换到“编译器”选项卡点击“Add” → “GCC” → “C”手动选择 MinGW 的g.exeC:\Qt\Tools\mingw1120_64\bin\g.exe同理再添加 C 编译器gcc.exe和调试器gdb.exe。有时候 Qt Creator 会自动检测到这些工具但如果没检测到你需要手动加。4.2 配置新的构建套件回到 Kits 选项卡点击“Add”新建一个 Kit。关键字段如下Name建议写成Qt 6.5.2 MinGW 64-bit这种自解释的名字以后项目多了方便区分。编译器C 和 C 都选刚才添加的 MinGW 编译器。调试器选gdb.exe。Qt version选6.5.2 (MinGW 64-bit)。CMake 工具选 Qt 安装目录里Tools\CMake_64\bin\cmake.exe。Generator通常选Ninja这是 Qt6 时代推荐的方式编译速度快增量构建体验好。配置完成后点击“OK”保存。回到 Kit 列表如果 Kit 名字后面图标变成绿色并且没有红色警告标记说明这个 Kit 是可用的。你可以点右边的“套件信息”看详情只有编译器、调试器、Qt version 这几个核心项都有绿色对勾Kit 才算真正配置完成。注意如果你用的是 MSVC 版 Qt6不要手动添加编译器为 MinGWMSVC 需要安装 Visual Studio 的“使用 C 的桌面开发”工作负载然后在 Qt Creator 里一般会自动检测到 MSVC 的 cl.exe。手动混搭编译器和 Qt 版本是新手配置里最常见的问题而且编译错误会非常奇怪比如大量 “undefined reference to” 链接错误。4.3 用 Qt Creator 新建项目验证配置配置完成后强烈建议立刻新建一个项目来验证整条链路。进入“文件” → “新建项目” → “Application” → “Qt Widgets Application”项目名称我用DemoTest创建时注意选择刚才配置好的 Kit不要选 Default。构建系统这里Qt6 默认推荐 CMake我建议你保持 CMake不要选 qmake 除非你有特殊的迁移需求。Qt6 对 CMake 的支持已经很成熟组件查找、编译、部署都更清晰。项目创建后先构建再运行。如果编译输出窗口不会被红色错误刷屏而是出现Build succeeded并且程序窗口正常弹出那就说明 Qt6 的环境配置已经全部打通。一个空白的 Qt Widgets 程序跑起来你的开发环境才算真正被激活。有个小细节Windows 上第一次编译可能需要一两分钟因为要生成 moc 文件、链接 Qt 库。等你看到输出目录里生成了demoTest.exe第二步可以直接在文件管理器里双击试试。如果双击能正常运行说明 Qt 的 DLL 路径已经配置正确如果提示缺Qt6Core.dll那就说明运行时路径没配上需要把C:\Qt\6.5.2\mingw_64\bin加到 Path也就是我在第 3 节强调的事。5. 把 Qt6 配到 VS Code 与 CLion5.1 VS Code 配置 Qt6最小可运行方案不是所有人都喜欢用 Qt Creator。不少做 C 开发的人更习惯 VS Code它轻量、免费、插件生态好。VS Code 下配置 Qt6核心思路很简单用 CMake 作为构建系统让 CMake 知道去哪里找 Qt6。需要安装的插件就两个C/C 扩展ms-vscode.cpptools提供 IntelliSense 和编译调试能力。CMake Tools 扩展ms-vscode.cmake-tools负责配置和构建 CMake 工程。然后在你项目的根目录下建一个CMakePresets.json文件内容大致如下{ version: 3, configurePresets: [ { name: qt6-debug, displayName: Qt 6.5.2 Debug, generator: Ninja, binaryDir: ${sourceDir}/build/debug, cacheVariables: { CMAKE_PREFIX_PATH: C:/Qt/6.5.2/mingw_64, CMAKE_C_COMPILER: C:/Qt/Tools/mingw1120_64/bin/gcc.exe, CMAKE_CXX_COMPILER: C:/Qt/Tools/mingw1120_64/bin/g.exe, CMAKE_BUILD_TYPE: Debug } } ] }其中CMAKE_PREFIX_PATH是关键CMake 靠它找到Qt6Config.cmake。如果你的 CMakeLists.txt 里有find_package(Qt6 COMPONENTS Widgets REQUIRED)CMake 解析这个指令时就会去C:/Qt/6.5.2/mingw_64/lib/cmake/Qt6下面找对应的配置文件。找不到就是这个路径没写对。配置好后在 VS Code 命令面板里运行 “CMake: Configure”然后 “CMake: Build”最后 “CMake: Debug” 就能跑起 Qt 程序。VS Code 的好处是轻量坏处是对新手来说调试器配置比 Qt Creator 麻烦一点需要自己在 launch.json 里指定miDebuggerPath为 gdb 的路径。不过一旦配顺了真香。5.2 CLion 中接入 Qt6CLion 的配置思路和 VS Code 类似但由于 CLion 本身就是 JetBrains 家专门给 C/C 用的 IDE配置位置更集中。打开“File” → “Settings” → “Build, Execution, Deployment” → “Toolchains”把 CMake 和编译器切换成 Qt6 对应的工具链。然后在 “CMake” 页面里Add 一个新的 Profile在 CMake options 里手动加一行-DCMAKE_PREFIX_PATHC:/Qt/6.5.2/mingw_64或者直接在系统环境变量里设置CMAKE_PREFIX_PATHCLion 也会继承。之后在 CLion 里打开你的 CMakeLists.txt它会自动重新加载并生成目标。CLion 有几点比 VS Code 省心内置的调试器配置很顺手CMake 目标的运行配置是自动生成的而且对 CMake 错误信息的展示更直观。缺点自然是它是收费软件但对学生、教育场景有免费授权开发者手里的 CLion 也不算少见。如果你之前一直用 VS 系 IDE不太熟悉 CMake 的话还有一个更懒的思路直接把 Qt Creator 生成的 CMakeLists.txt 和构建目录复制过来用 CLion 打开CMakeLists.txt然后手动改一下 CMake Profile 里的CMAKE_PREFIX_PATH。Qt Creator 生成的工程对 CLion 的兼容性通常不错因为底层都是 CMake。6. 典型问题排查与环境验证速查6.1 排查思路从“编译失败”倒推环境配置的报错五花八门但我总结下来90% 的问题都能归到下面四条链路中的一环编译器找不到、Qt 包找不到、链接库失败、运行时 DLL 缺失。先看“编译器找不到”。典型报错是C compiler cannot create executables或CMAKE_CXX_COMPILER NOT FOUND。这种时候回到 Qt Creator 或 CMake 配置里检查编译器路径。在 Windows 上最容易犯的错是用系统里老旧的 MinGW而 Qt6 要求编译器版本较新直接源码编译时会报Qt requires a C17 compiler。再看“Qt 包找不到”。CMake 报错通常是Could not find a package configuration file provided by Qt6解决办法就是给 CMake 指路要么设置环境变量CMAKE_PREFIX_PATH要么在CMakeLists.txt中写set(CMAKE_PREFIX_PATH C:/Qt/6.5.2/mingw_64)放在find_package(Qt6 COMPONENTS Widgets REQUIRED)之前。然后是“链接失败”。频繁出现的错误有undefined reference to main或者一堆 Qt 相关符号找不到。这类问题大概率是 Qt 组件没配对。比如你 CMakeLists 里声明了 Widgets 组件却忘记find_package里写COMPONENTS Widgets或者只写了Qt6没写组件名。还有可能是 Qt 库与编译器的 ABI 不匹配比如用 MinGW 版 Qt 库配 MSVC 编译器链接时各种符号对不上。最后是“运行时缺 DLL”。编译成功了程序却在运行时弹窗提示缺失Qt6Widgets.dll、Qt6Core.dll。这是因为可执行文件在运行时需要去Path或程序目录下找 DLL。解决办法就是把C:\Qt\6.5.2\mingw_64\bin加进Path或者用windeployqt.exe把依赖的 DLL 全部部署到 exe 所在目录。windeployqt是 Qt 官方提供的工具路径在C:\Qt\6.5.2\mingw_64\bin\windeployqt.exe命令用法很简单cd /d D:\YourProject\build\debug C:\Qt\6.5.2\mingw_64\bin\windeployqt.exe your_app.exe跑完会发现 exe 目录下多了一堆 Qt dll 和插件目录双击就能直接运行。6.2 常见问题速查表下面是我在配置 Qt6 过程中遇到的比较典型的问题用表格整理出来方便你对照排查。现象常见原因解决办法Kit 显示红色不可用编译器、Qt version、调试器至少一项未配置检查 Kits 里每项设置逐个修正qmake --version 找不到命令Path 未包含 Qt bin 路径配置 Path 后重开终端CMake 找不到 Qt6CMAKE_PREFIX_PATH 未设置设置 CMAKE_PREFIX_PATH 指向 .../mingw_64编译报 C17 错误编译器版本过旧换成 Qt 捆绑的 MinGW 或新版编译器undefined reference 一堆工具链 ABI 不匹配确认 Qt 库版本和编译器一致双击 exe 提示缺 DLL运行时 DLL 路径没配将 Qt bin 加入 Path 或使用 windeployqt升级 Qt 后旧项目 build 失败CMake 缓存还指向旧路径删除 build 目录后重新 Configure6.3 几条让后续开发顺利的小习惯配置环境这件事不只是“装好一次就完事”。我自己的经验是Qt 版本升级、编译器换版本、系统重装都会让环境重新变得混乱。所以有几个习惯可以帮你省掉不少麻烦。第一升级 Qt 前先把build目录清掉一次。CMake 缓存里记录了大量旧路径如果不清理直接重新构建很容易出现Could not find Qt6Config.cmake这种其实路径没变但缓存错乱的诡异问题。第二用 Qt Maintenance Tool 管理组件不要只靠安装包一次装完。Qt 提供了一个专门维护工具在安装目录下启动它你可以随时添加或移除组件比重新下载安装包快得多。安装新模块前记得先清理 CMake 缓存。第三对初学者来说环境配置文件不要乱放。Qt Creator、VS Code、CLion 各有各的配置文件位置我建议你单独建一个笔记文件把以下关键信息记下来Qt 安装路径、Kit 名称、编译器路径、CMake 路径、CMAKE_PREFIX_PATH值。这样不管是换电脑还是重装系统照着填一遍就行不用每次重新摸索。第四Windows 上如果遇到 Qt 程序在别人电脑上运行不起来第一反应不要是怀疑代码问题先跑一遍windeployqt把运行时打包齐整。我见过太多人把几百 MB 的开发包直接拷给同事结果 DLL 冲突其实一个部署工具就能解决。我个人在实际配置 Qt6 环境时最深的体会是把 “编译器” 和 “Qt 库版本” 的控制权掌握在手里比记住一百条命令更有用。所以每次新建环境我都会坚持先验证qmake、g、cmake三条命令的输出确认无误再进 Qt Creator 配 Kit。这套流程下来之后基本很少遇到报错。环境配置就是一个“先把工具认全再谈项目开发”的过程走一遍你以后就熟了。最后再分享一个小技巧如果你觉得自己手动配置太麻烦其实可以先打开 Qt Creator 安装时不勾选任何组件等进入 IDE 后通过 “Manage Kits” 向导一步步配。虽然不推荐作为主线方案但当你卡在某一步实在不知道去哪找配置项的时候这个向导就像一张导航图能帮你快速定位问题在哪一环节。环境配置这件事没必要一次做完美但每一步都要知道自己在配什么、为什么配。这种底层的认知才是真正让你后续开发不慌的东西。
返回列表