qt_add_qml_module的DEPENDENCIES TARGET未自动处理QML模块路径问题
关于Qt现代QML模块DEPENDENCIES依赖与QT_QML_OUTPUT_DIRECTORY的问题
Qt官方文档《Modern QML modules》指出,若在QML模块的DEPENDENCIES目标中声明依赖,则无需设置QT_QML_OUTPUT_DIRECTORY变量,但实际测试中该结论不成立。
测试项目结构
DynamicLinkingCustomStructureModernExample │ CMakeLists.txt └───sources │ CMakeLists.txt ├───App │ CMakeLists.txt │ main.cpp │ Main.qml └───Modules │ CMakeLists.txt └───ModuleA CMakeLists.txt ItemA.qml
问题详情
ModuleA的URI为Modules.ModuleA,App模块通过DEPENDENCIES TARGET依赖ModuleA。编译完成后出现以下路径不匹配问题:
- ModuleA的生成路径为
build\Desktop_Qt_6_8_2_llvm_mingw_64_bit-Debug\sources\Modules\ModuleA - Qt工具链自动添加的QML导入路径为
build\Desktop_Qt_6_8_2_llvm_mingw_64_bit-Debug\sources\Modules
该问题直接引发两个加载失败场景:
- Main.qml中执行
import Modules.ModuleA时,无法定位到模块文件 - 尝试改用
import ModuleA,会因Qt强制要求使用完整URI而报错
临时解决办法
手动将sources路径添加到QML导入列表后,模块可正常被识别和加载。
内容的提问来源于stack exchange,提问作者AGK
相关产品推荐
相关产品推荐

