Qt6静态编译踩坑指南:VS更新帮你脱困!
创作时间:
作者:
@小白创作中心
Qt6静态编译踩坑指南:VS更新帮你脱困!
引用
CSDN
等
11
来源
1.
https://blog.csdn.net/aggs1990/article/details/139723748
2.
https://blog.csdn.net/aggs1990/article/details/144475996
3.
https://wiki.qt.io/Building_Qt_6_from_Git
4.
https://learn.microsoft.com/zh-cn/troubleshoot/developer/visualstudio/installation/unable-update-using-help-menu?source=recommendations
5.
https://forum.qt.io/topic/159798/msys2-qt6-8-mingw64-ucrt64-static-version-patch-and-qt5-15-windeployqt-fix
6.
https://wiki.archlinux.org/title/Qt
7.
https://wiki.qt.io/Cross-Compile_Qt_6_for_Raspberry_Pi
8.
http://dict.youdao.com/example/visual_visual_studio/
9.
https://m.pianwan.com/soft/91089
10.
https://forum.qt.io/topic/156328/qt-qpa-plugin-could-not-find-the-qt-platform-plugin
11.
https://forum.qt.io/topic/159772/some-doubts-about-linux-deployment
Qt6静态编译是许多开发者在开发跨平台应用程序时的必备技能。然而,在实际操作中,经常会遇到各种令人头疼的问题。本文将分享一些实用的解决方案,帮助你顺利解决静态编译过程中遇到的难题。
01
环境准备
在开始Qt6静态编译之前,确保你的开发环境满足以下要求:
- Git版本 >= 1.6.x
- CMake版本 >= 3.21.1(对于Qt 6.2+的静态构建)
- 支持C++17的C++编译器
- Python >= 2.6.x
- Windows平台需要Visual Studio 2022或2019,推荐使用最新版本
特别注意:从Qt 6.8开始,Windows平台已全面转向MSVC2022,因此建议使用VS2022以获得最佳兼容性。
02
常见问题及解决方案
qmake配置问题
在MSYS2环境下使用Qt6静态版本时,可能会遇到链接错误,错误信息类似于:
C:/msys64/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/msys64/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../lib\libharfbuzz.a(hb-graphite2.cc.obj):(.text+0x18c): undefined reference to `gr_make_face_with_ops'
解决方案是在.pro文件中添加以下配置:
contains(QT, widgets){
MSYSTEM_PREFIX=$$(MSYSTEM_PREFIX)
greaterThan(MSYSTEM_PREFIX,' '){
contains(CONFIG, static) {
message ("Perform Qt6 Static library with MSYS2 patch.")
CONFIG += no_lflags_merge
# for 2023 version , 2024-11 not needed:
# LIBS += -ltiff -lmng -ljpeg -ljbig -ldeflate -lzstd -llerc -llzma -lgraphite2 -lbz2 -lusp10 -lRpcrt4 -lsharpyuv -lOleAut32
}
}
}
CMake配置问题
使用CMake时,可能会遇到以下错误:
ninja: error: '/ucrt64/lib/libuiautomationcore.a', needed by 'helloWorld.exe', missing and no known rule to make it
解决方案是修改以下4个文件:
C:\msys64\mingw64\qt6-static\lib\cmake\Qt6Gui\Qt6QWindowsIntegrationPluginTargets-release.cmakeC:\msys64\mingw64\qt6-static\lib\cmake\Qt6Gui\Qt6QWindowsDirect2DIntegrationPluginTargets-release.cmakeC:\msys64\ucrt64\qt6-static\lib\cmake\Qt6Gui\Qt6QWindowsIntegrationPluginTargets-release.cmakeC:\msys64\ucrt64\qt6-static\lib\cmake\Qt6Gui\Qt6QWindowsDirect2DIntegrationPluginTargets-release.cmake
将其中的绝对路径修改为相对路径,例如:
INTERFACE_LINK_LIBRARIES "...;libuiautomationcore.a;\$<LINK_ONLY:uuid>"
03
最佳实践
保持工具链更新:确保所有工具(如CMake、Visual Studio、MSYS2)都是最新版本,这可以避免许多兼容性问题。
合理组织项目结构:将第三方库和Qt库的路径清晰地组织在项目配置中,避免路径过长导致的问题。
使用环境变量:通过环境变量管理不同构建配置的路径,可以使项目配置更加灵活。
详细记录构建日志:遇到问题时,详细记录构建日志可以帮助快速定位问题。
04
总结
Qt6静态编译虽然过程复杂,但通过合理的配置和工具链管理,可以有效避免许多常见问题。希望本文分享的解决方案能帮助你在开发过程中少走弯路。如果在实际操作中遇到其他问题,欢迎在Qt官方论坛或邮件列表中寻求帮助。
热门推荐
夏天光脚跑,对孩子有意想不到的好处,不出3年优势就会凸显
避雷针是谁发明的?揭秘避雷针的发明者、作用与原理
芜湖美食地图大公开,小巷里那些惊艳舌尖的美食!
Excel文件生成与打开完全指南:从入门到精通
10个室内设计技巧,让你玩转室内设计!
大S真实死因有变?为何没有住院?相关人士:日本大医院非患者想去就能去
最新研究显示,吃胡萝卜,或可抵御糖尿病,并改善肠道健康
颈肩综合症怎么缓解头疼
勒沃库森 vs 萨尔茨堡:数据前瞻与战术解析,药厂剑指胜利
风水中的穿堂煞是什么意思
多重人格障碍:探索自我认同的迷宫
老兵创业纪:从部队报道员到自媒体创业者
抖音直播复盘怎么做?复盘内容有哪些?
填补甘肃戏剧创作空白 《嗨!我是小五》深度解读
你以为心脏支架术后出院就是“高枕无忧”吗?一文盘点:心脏支架术后面临的6类问题
毛囊炎是什么样的
这种神仙早餐搭配“控血糖”又好吃
王者荣耀典韦出装攻略,三板斧秒人六神装搭配思路
江西萍乡产业转型升级成效显著 新兴产业持续壮大
山水画风水学的讲究与忌讳
外伤伤口涂什么药膏好得快不留疤
55岁退休女教师开启人生第二春的全方位规划指南
功在世界 心怀家国——科学巨擘杨振宁
企业微信账号退出操作指南:从主动退出到账号删除的全流程解析
云南普洱:茶香四溢的自然秘境
除了纸嫁衣还有哪些好玩的剧情解谜游戏推荐
雨中山果落,灯下草虫鸣。20句特别唯美诗词:赏心悦目,韵味无穷
阴阳家的思想主张及其流派
国内的元宇宙游戏有哪些
“清”字的含义与象征意义