CMake Error: AUTOUIC for target MIPETReconMLAA: Test run of “uic” executable “C:/Qt/Qt5.4.2-64bit-msvc2010-debug/qtbase/bin/uic.exe” failed.
C:/Qt/Qt5.4.2-64bit-msvc2010-debug/qtbase/bin/uic.exe -h

CMake Error: uic.exe -h

问题的根本原因:
1、 QT 没有安装好,uic.exe 依赖的lib或者其他文件不能正常加载到操作系统中
2、环境变量没有配置好,导致uic.exe 依赖的东西无法正常加载出来

解决步骤

根据错误信息,CMake在尝试调用Qt的uic工具时失败。以下是逐步排查和解决问题的方案:


1. 验证 uic.exe 是否存在且可执行
  • 检查文件路径
    确认 C:/Qt/Qt5.4.2-64bit-msvc2010-debug/qtbase/bin/uic.exe 文件是否存在。如果不存在:
    • 可能是Qt安装不完整,需重新安装Qt。
    • 确认安装路径是否正确(如是否误装了32位版本)。
  • 手动运行 uic.exe
    在命令行中手动执行以下命令,观察是否能正常输出帮助信息:
    C:/Qt/Qt5.4.2-64bit-msvc2010-debug/qtbase/bin/uic.exe -h
    
    • 如果提示缺失DLL(如 Qt5Cored.dll),跳转到 步骤3
    • 如果提示“不是有效的Win32程序”,可能是编译器不兼容(如使用MSVC2017编译但Qt是MSVC2010版本),需安装匹配的Qt。

2. 检查 CMAKE_PREFIX_PATH 配置
  • 路径设置建议
    确保 CMAKE_PREFIX_PATH 指向Qt的根目录,而不是子目录(如 qtbase):
    set(CMAKE_PREFIX_PATH "C:/Qt/Qt5.4.2-64bit-msvc2010-debug")
    
  • 通过命令行指定
    如果使用CMake命令行,可以覆盖路径:
    cmake -DCMAKE_PREFIX_PATH="C:/Qt/Qt5.4.2-64bit-msvc2010-debug" ..
    

3. 解决依赖的DLL缺失问题
  • 检查Qt的 bin 目录
    确保以下DLL存在于 C:/Qt/Qt5.4.2-64bit-msvc2010-debug/qtbase/bin 中:
    • Qt5Cored.dll(Debug版)
    • Qt5Core.dll(Release版)
    • 其他可能的依赖(如 msvcr100.dll, msvcp100.dll)。
  • 修复方法
    • 如果DLL缺失,重新安装Qt。
    • 将Qt的 bin 目录添加到系统 PATH 环境变量中:
      set PATH=C:/Qt/Qt5.4.2-64bit-msvc2010-debug/qtbase/bin;%PATH%
      

4. 检查编译器兼容性
  • 确认Qt版本与编译器匹配
    • 此Qt版本 (win32-msvc2010) 是为 Visual Studio 2010 编译的。
    • 如果使用其他版本的Visual Studio(如VS2019),需安装对应版本的Qt(如 msvc2019)。
  • 安装VC++ 2010运行库
    如果手动运行 uic.exe 失败且提示缺少 msvcr100.dll,需安装 Visual C++ 2010 Redistributable

5. 清理CMake缓存
  • 删除 build 目录并重新生成:
    rm -rf build
    mkdir build && cd build
    cmake .. -DCMAKE_PREFIX_PATH="C:/Qt/Qt5.4.2-64bit-msvc2010-debug"
    

6. 验证Qt安装完整性
  • 使用预编译的Qt二进制包
    避免手动编译Qt源码可能导致的配置问题。从 Qt官方下载页面 下载与编译器匹配的预编译版本。
  • 检查安装日志
    如果自行编译Qt,确保安装命令 nmake installmingw32-make install 执行成功。

附加说明

  • Debug vs Release配置
    如果项目使用Debug模式,确保安装的是Qt的Debug版本(包含调试符号和DLL)。
  • 使用Dependency Walker诊断
    工具 Dependency Walker 可分析 uic.exe 的依赖关系,快速定位缺失的DLL。

完成以上步骤后,CMake应能正确调用 uic 工具。如果问题仍存在,考虑更换Qt版本或检查系统环境。

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐