Qt 5.14.2编译报错:未知QT模块3dquick/qml等问题求助
解决Qt 5.14.2编译时"Unknown module(s) in QT: 3dquick qml quick 3dquickextras"错误
问题根源
你遇到的编译错误核心原因很明确:
- 你的
configure命令里加了-skip qtdeclarative,但qml、quick正是Qt Declarative模块的核心组成部分,跳过它直接导致这些基础模块缺失。 - Qt3D的
3dquick、3dquickextras模块完全依赖Qt Quick的基础能力,同时编译流程默认会尝试构建Qt3D的示例项目,这些示例直接调用了这些缺失的模块,最终触发报错中断编译。
解决办法
根据你的实际需求,提供两种针对性方案:
方案一:保留Qt3D及Qt Quick相关功能
如果你需要使用Qt3D的Quick可视化能力,或者本身需要Qt Quick特性,修改configure命令,移除-skip qtdeclarative参数即可:
qtbase/configure -top-level --prefix=/opt/local/Qt-5.13.2 -skip qtconnectivityy -skip qtandroidextras -skip qtwayland -skip qtsensors -skip qtmacextras -skip qtwinextras -qt-xcb -opensource -confirm-license -icu -v -release -I /opt/local/include -L /opt/local/lib -skip qtmultimedia -skip qtcanvas3d
方案二:完全移除Qt3D相关模块
如果你根本不需要Qt3D的任何功能,直接在configure命令中添加-skip qt3d,彻底跳过整个Qt3D模块的编译,这样就不会触发其示例项目的依赖检查:
qtbase/configure -top-level --prefix=/opt/local/Qt-5.13.2 -skip qtconnectivityy -skip qtandroidextras -skip qtwayland -skip qtsensors -skip qtmacextras -skip qtwinextras -skip qt3d -qt-xcb -opensource -confirm-license -icu -v -release -I /opt/local/include -L /opt/local/lib -skip qtmultimedia -skip qtdeclarative -skip qtcanvas3d
额外注意事项
- 在重新执行configure前,一定要清理之前的编译缓存,避免残留配置干扰新的构建:
make clean rm -rf qtbase/.qmake.cache - 后续如果还有其他模块错误,建议检查你跳过的模块列表是否存在依赖链问题——有些模块可能依赖你已跳过的组件,需要重新评估跳过的必要性。
内容的提问来源于stack exchange,提问作者user1239973




