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官方论坛或邮件列表中寻求帮助。
热门推荐
土耳其存款移民的投资要求以及申请流程全面解析
“水断食”减肥盛行,医生提醒禁食减肥危害多—— 别在追求“美”的路上走岔了
为什么兰寿金鱼比较难养,怎么才能养好
《哪吒之魔童闹海》爆火 盗版产业链暗流涌动 “魔丸”觉醒,岂容版权被侵?
在复杂世界中寻找自我存在感的探索与思考
高情商沟通6大黄金法则:学会这几点,90%的社交难题都能化解
达安科普:生化诊断中的电解质三项的常规临床应用
老动画+段子=百万播放:老动画配音凭什么风靡B站?
拍肩法催眠术犯罪案例:法律适用与司法实践分析
“福建机场集团”:最奇特的机场集团!
东北独特美食:用虫做的美味佳肴
太极拳心法探秘:意是什么?什么是意在先?
抑郁症的十大表现症状及治疗方法
彻底清理iPhone:教你如何恢复出厂设置并抹掉所有内容
换光猫需要解绑旧光猫吗?一文解答你的疑惑
拿破仑法典:法律发展的里程碑及其影响与评价
从程序员到架构师:实现技术巅峰的完美转型
大基数减重,讲究科学很重要!
脐疝宝宝的症状表现及应对方法
什么是权力结构
数据库如何限制内存
原神新账号抽卡概率揭秘:5星角色真的更容易获得吗?
探寻香港风情:深度游览香港十大必去景点
广东124个镇跻身全国千强镇,靠什么?
“嘀嘀——嘀”神奇的摩尔斯电码!
JS防水胶弄到手上怎么办?多种实用处理方法详解
千年渔村的文旅创新:蟳埔·簪花围如何引领全国旅游时尚
女性在预防、应对和恢复性别暴力中的策略和角色是什么?
自富阳至桐庐一百许里,奇山异水,天下独绝。
顶级游资陈小群的投资策略、思维与心法