Qt源码编译实战Windows下从QtBase到QtCreator的深度探索第一次尝试在Windows上编译Qt源码时我盯着满屏的报错信息发呆——这和我预想的configure make完全不一样。作为有五年C经验的开发者本以为Qt编译不过是走个流程没想到从环境配置到模块选择处处是坑。本文将分享如何用Mingw64环境完整编译Qt生态包括那些官方文档没写清楚的细节。1. 环境准备比想象更复杂的依赖迷宫在开始编译前我天真地以为安装好Mingw就万事大吉。实际上Qt的依赖关系像一张复杂的网# MSYS2环境下必须安装的基础包 pacman -S --needed base-devel mingw-w64-x86_64-toolchain pacman -S mingw-w64-x86_64-qt5关键依赖项对比表依赖项作用安装方式常见坑点OpenGL图形渲染支持系统驱动/MSYS2安装Windows默认只支持OpenGL 1.1ICUUnicode和全球化支持pacman -S icuWebKit模块必需Python 3QML工具链依赖MSYS2或独立安装必须3.6版本OpenSSL网络加密通信pacman -S openssl版本冲突会导致编译中断提示使用-opengl desktop参数时务必确认显卡驱动支持OpenGL 2.1否则运行时会出现黑屏问题环境变量设置是另一个暗坑。我的配置方案# ~/.bashrc 追加 export PATH/mingw64/bin:$PATH export QTDIR/qt-build/qtbase2. QtBase编译从混乱到清晰的分步突围官方文档建议直接运行根目录的configure但实际操作中发现分步编译更可控。我的qtbase编译路线# 在专门构建目录执行避免污染源码 mkdir /qt-build/qtbase cd /qt-build/qtbase ../../qt-src/qtbase/configure -prefix /Qt/5.15.2/mingw64 \ -debug-and-release \ -opensource -confirm-license \ -nomake examples \ -skip qtwebengine \ -opengl desktop \ -ssl -icu参数解析-prefix指定安装路径建议用短路径避免Windows 260字符限制-debug-and-release同时生成调试和发布版本-skip qtwebengine这个模块依赖Chromium首次编译建议跳过编译过程中最耗时的部分是qmake生成阶段。使用多核编译能显著加速mingw32-make -j8 # 根据CPU核心数调整遇到编译失败时两个诊断命令特别有用# 查看Qt配置摘要 cat config.summary # 查询当前Qt安装信息 qmake -query3. 模块化编译像搭积木一样的构建策略完成qtbase后其他模块可以按需编译。我的推荐顺序qttools包含qdoc、designer等关键工具cd /qt-build/qttools /Qt/5.15.2/mingw64/bin/qmake ../../qt-src/qttools mingw32-make -j8qtdeclarativeQML引擎核心-skip qtvirtualkeyboard # 虚拟键盘模块常出问题qtmultimedia注意WMF相关报错qmake ../../qt-src/qtmultimedia -- -no-wmf模块依赖关系图qtbase → qttools → qtdeclarative ↘ qtmultimedia ↘ qtsvg注意每次编译新模块前确保PATH包含已编译模块的bin目录4. QtCreator编译从qmake到CMake的战术转移本以为用刚编译好的qmake就能轻松构建QtCreator现实却给了当头一棒。经过三天尝试最终CMake方案成功mkdir /qt-build/qtcreator cd /qt-build/qtcreator cmake ../../qt-src/qtcreator \ -DCMAKE_PREFIX_PATH/Qt/5.15.2/mingw64 \ -DCMAKE_BUILD_TYPERelease \ -G MinGW Makefiles关键转折点必须设置CMAKE_PREFIX_PATH指向自编译的Qt目录需要额外安装LLVM用于代码模型pacman -S mingw-w64-x86_64-llvm编译完成后这个自构建的QtCreator有个隐藏优势可以直接调试Qt源码。在工具→选项→Kits中添加新套件并指定自编译的Qt版本即可。5. 调试技巧与性能优化整个编译过程最耗时的就是反复试错。分享几个加速技巧编译缓存方案# 在configure前设置 export CCACHE_DIR/qt-ccache ccache -M 10G # 分配10GB缓存空间并行编译优化# 在Makefile中追加 QMAKE_CXXFLAGS -pipe # 减少临时文件IO MAKEFLAGS -j$(nproc)遇到诡异错误时先检查这些文件config.log详细记录配置过程config.summary各功能检测结果mkspecs/win32-g/qmake.conf编译器参数模板最后给Windows用户的特别提醒所有路径最好用/而不用\避免转义字符问题。我在路径处理上浪费的时间足够看完一部《指环王》三部曲。
Qt源码编译踩坑实录:从QtBase到QtCreator,我的Windows Mingw64环境搭建笔记
发布时间:2026/6/5 22:05:00
Qt源码编译实战Windows下从QtBase到QtCreator的深度探索第一次尝试在Windows上编译Qt源码时我盯着满屏的报错信息发呆——这和我预想的configure make完全不一样。作为有五年C经验的开发者本以为Qt编译不过是走个流程没想到从环境配置到模块选择处处是坑。本文将分享如何用Mingw64环境完整编译Qt生态包括那些官方文档没写清楚的细节。1. 环境准备比想象更复杂的依赖迷宫在开始编译前我天真地以为安装好Mingw就万事大吉。实际上Qt的依赖关系像一张复杂的网# MSYS2环境下必须安装的基础包 pacman -S --needed base-devel mingw-w64-x86_64-toolchain pacman -S mingw-w64-x86_64-qt5关键依赖项对比表依赖项作用安装方式常见坑点OpenGL图形渲染支持系统驱动/MSYS2安装Windows默认只支持OpenGL 1.1ICUUnicode和全球化支持pacman -S icuWebKit模块必需Python 3QML工具链依赖MSYS2或独立安装必须3.6版本OpenSSL网络加密通信pacman -S openssl版本冲突会导致编译中断提示使用-opengl desktop参数时务必确认显卡驱动支持OpenGL 2.1否则运行时会出现黑屏问题环境变量设置是另一个暗坑。我的配置方案# ~/.bashrc 追加 export PATH/mingw64/bin:$PATH export QTDIR/qt-build/qtbase2. QtBase编译从混乱到清晰的分步突围官方文档建议直接运行根目录的configure但实际操作中发现分步编译更可控。我的qtbase编译路线# 在专门构建目录执行避免污染源码 mkdir /qt-build/qtbase cd /qt-build/qtbase ../../qt-src/qtbase/configure -prefix /Qt/5.15.2/mingw64 \ -debug-and-release \ -opensource -confirm-license \ -nomake examples \ -skip qtwebengine \ -opengl desktop \ -ssl -icu参数解析-prefix指定安装路径建议用短路径避免Windows 260字符限制-debug-and-release同时生成调试和发布版本-skip qtwebengine这个模块依赖Chromium首次编译建议跳过编译过程中最耗时的部分是qmake生成阶段。使用多核编译能显著加速mingw32-make -j8 # 根据CPU核心数调整遇到编译失败时两个诊断命令特别有用# 查看Qt配置摘要 cat config.summary # 查询当前Qt安装信息 qmake -query3. 模块化编译像搭积木一样的构建策略完成qtbase后其他模块可以按需编译。我的推荐顺序qttools包含qdoc、designer等关键工具cd /qt-build/qttools /Qt/5.15.2/mingw64/bin/qmake ../../qt-src/qttools mingw32-make -j8qtdeclarativeQML引擎核心-skip qtvirtualkeyboard # 虚拟键盘模块常出问题qtmultimedia注意WMF相关报错qmake ../../qt-src/qtmultimedia -- -no-wmf模块依赖关系图qtbase → qttools → qtdeclarative ↘ qtmultimedia ↘ qtsvg注意每次编译新模块前确保PATH包含已编译模块的bin目录4. QtCreator编译从qmake到CMake的战术转移本以为用刚编译好的qmake就能轻松构建QtCreator现实却给了当头一棒。经过三天尝试最终CMake方案成功mkdir /qt-build/qtcreator cd /qt-build/qtcreator cmake ../../qt-src/qtcreator \ -DCMAKE_PREFIX_PATH/Qt/5.15.2/mingw64 \ -DCMAKE_BUILD_TYPERelease \ -G MinGW Makefiles关键转折点必须设置CMAKE_PREFIX_PATH指向自编译的Qt目录需要额外安装LLVM用于代码模型pacman -S mingw-w64-x86_64-llvm编译完成后这个自构建的QtCreator有个隐藏优势可以直接调试Qt源码。在工具→选项→Kits中添加新套件并指定自编译的Qt版本即可。5. 调试技巧与性能优化整个编译过程最耗时的就是反复试错。分享几个加速技巧编译缓存方案# 在configure前设置 export CCACHE_DIR/qt-ccache ccache -M 10G # 分配10GB缓存空间并行编译优化# 在Makefile中追加 QMAKE_CXXFLAGS -pipe # 减少临时文件IO MAKEFLAGS -j$(nproc)遇到诡异错误时先检查这些文件config.log详细记录配置过程config.summary各功能检测结果mkspecs/win32-g/qmake.conf编译器参数模板最后给Windows用户的特别提醒所有路径最好用/而不用\避免转义字符问题。我在路径处理上浪费的时间足够看完一部《指环王》三部曲。