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官方论坛或邮件列表中寻求帮助。
热门推荐
无量跌停的原因是什么?这种市场现象如何影响投资者决策?
日本刀锷的种类及其艺术魅力
首次公开!731部队最大支队人员档案披露
自然卷发怎么打理才好看
梦见情人的老公:周公解梦中的深层含义
国庆出行注意,改签、购票有新变化!可“车内换座”
大A的含义是什么?大A在股市中的作用是什么?
火龙果抗失智、百香果防黄斑部病变!专家曝最佳吃水果时间 防血糖上升
百香果的性质及其对身体的影响(凉性还是热性)
盗用别人照片犯什么罪
支撑线和压力线怎么看(图解)
三星堆遗址出土青铜神树结合部位工业CT图像的再辨析
DIC三维全场应变测量系统的原理、应用与优势
劳动仲裁律师怎么选择?六大要素帮你快速决策
结构性存款有什么特点?值得存吗?
继承人能查死亡人开户银行所有流水吗
Excel自动分类编号设置指南:公式、VBA与数据透视表详解
雷军转身走向特斯拉
如何构建史料数据库:从规划到维护的全面指南
五行火的生克关系 五行中火的克制是什么
云南浪漫之旅:为女朋友庆祝生日攻略与惊喜建议
沪指站上3400点创年内新高 大消费、大金融板块领涨
火影忍者手游波风水门秽土转生技能详解
70%的热量消耗靠基础代谢,5个方法可以提高
车载导航常见故障及解决方法
简历的撰写技巧
长寿从50多岁做起,必须少吃这3种食物
翡翠戒圈大小测量方法与步骤详解
业主怎么解聘物业?解聘过程中需要遵循哪些程序?
权力幻象中的困兽——论王熙凤的悲剧性存在