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.cmake
C:\msys64\mingw64\qt6-static\lib\cmake\Qt6Gui\Qt6QWindowsDirect2DIntegrationPluginTargets-release.cmake
C:\msys64\ucrt64\qt6-static\lib\cmake\Qt6Gui\Qt6QWindowsIntegrationPluginTargets-release.cmake
C:\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官方论坛或邮件列表中寻求帮助。
热门推荐
杭州开出第一个民间体操培训班,这些家长为何送孩子去练体操?
古人平均寿命不超33岁,这么短的平均寿命,真是因为医学不发达?
常见的网络平台挣钱途径,开启你的创富之路
物业管理费都花在哪儿了?十大收费项目详细解析
嘉峪关长城研学游爆火,揭秘背后故事
甲钴胺使用全指南:从作用机制到五类疾病治疗方案
水包砂 vs 真石漆,谁才是外墙装饰王者?
盆栽辣椒冬季养护秘诀:入室保暖和修剪控水是关键
四明山冬季徒步:赏雪观冰瀑,12月22/24日出发
情人节送红玫瑰,表白成功率真的会翻倍吗?
牛蒡:膳食纤维含量超17%,兼具养生功效与多样食法
五个月减30斤,7个心理调节妙招助你突破减重瓶颈
基于临床营养指南:5个月减掉30斤的科学减重法
五个月减30斤:一套安全有效的科学减重方案
从240斤到140斤:青岛小伙5个月减重百斤记
RSI指标详解:股市技术分析的重要工具与实战应用
香港中文大学:院校信息与书院制度详解
美的智能制造研究院再添两项“国际领先”技术成果
QS最新亚洲大学排名出炉:香港三所大学跻身前十强
手串盘玩指南:三种材质的正确盘玩方法
烫伤急救五字诀:冲脱泡盖送,这些错误别再犯
桂林去厦门二日游路线攻略:行程规划与景点推荐
首部英文南京大屠杀专著出版,张纯如让世界记住历史
花树下拍照11个姿势,动作越简单,照片越自然
15分钟1.8元,共享单车租金上涨折射盈利困境
家庭情感支持:孩子心理健康的关键
湘西州打造“村厨村艺大晒”品牌,文旅融合带动5600万人次打卡
假释女囚回归社会:政策帮扶与自我调适双管齐下
澳大利亚的珊瑚礁:五大潜水胜地全攻略
世卫组织发布首份戒烟指南,上海交大医学院贡献中国智慧