Yocto构建Qt6应用时无法找到Qt6LinguistTools组件
解决Yocto构建Qt6应用时找不到Qt6LinguistTools的问题
问题分析
报错核心是CMake在目标sysroot中找不到Qt6LinguistToolsConfig.cmake,这是因为Qt6的LinguistTools模块属于构建主机(host)端依赖,而非目标板(target)依赖。仅添加qttools到Yocto配方的DEPENDS无法满足构建时对host端工具和cmake配置的需求。
修复步骤
1. 修正Yocto配方的依赖项
在你的应用配方(如myappqt.bb)中,同时添加qttools-native和qttools到DEPENDS:
DEPENDS += "qt6base qttools qttools-native qt6virtualkeyboard"
qttools-native:提供构建主机所需的LinguistTools cmake配置文件、lupdate/lrelease等工具qttools:提供目标板运行时可能需要的翻译相关组件(如果你的应用需要在目标板处理翻译)
2. 优化CMakeLists.txt配置
Qt6::LinguistTools是构建时工具模块,不需要链接到目标二进制,因此可以从target_link_libraries中移除:
find_package(Qt6 6.4 REQUIRED COMPONENTS Quick Network VirtualKeyboard Concurrent LinguistTools) target_link_libraries(app${PROJECT_NAME} PRIVATE Qt6::Quick Qt6::VirtualKeyboard Qt6::Concurrent # 移除Qt6::LinguistTools,它不是运行时依赖 )
保留find_package中的LinguistTools即可,CMake会自动加载对应的构建规则(如处理.ts文件生成.qm)。
3. 清理并重新构建
执行以下命令清理之前的构建缓存,确保新依赖生效:
bitbake myappqt -c cleanall bitbake myappqt
验证
构建完成后,检查recipe-sysroot-native/usr/lib/cmake/Qt6LinguistTools目录是否存在,该目录下应包含Qt6LinguistToolsConfig.cmake等配置文件,CMake会在交叉编译时自动从host sysroot中查找这些文件。
内容的提问来源于stack exchange,提问作者void_brain
相关产品推荐
相关产品推荐

