Make Error at /usr/share/cmake-3.16/Modules/FindQt4.cmake:1314 (message): Found unsuitable Qt version "5.12.8" from /usr/bin/qmake, this code requires Qt 4.x Call Stack (most recent call first): stdr_simulator/stdr_gui/CMakeLists.txt:20 (find_package) -- Configuring incomplete, errors occurred! See also "/home/robot/stdr_ws/build/CMakeFiles/CMakeOutput.log". See also "/home/robot/stdr_ws/build/CMakeFiles/CMakeError.log".
时间: 2025-07-22 08:35:01 浏览: 4
<think>我们正在处理用户在编译stdr_simulator时遇到的CMake错误:Found unsuitable Qt version "5.12.8", requires Qt 4.x。根据引用内容,这个问题通常是因为项目要求Qt4,但系统默认的Qt版本是Qt5。以下是解决方案:
### 解决方案:安装Qt4并配置CMake使用Qt4
#### 1. **安装Qt4开发包**
在Ubuntu上安装Qt4:
```bash
sudo apt-get install qt4-default
```
#### 2. **设置Qt4为默认版本(可选)**
如果系统同时安装了Qt4和Qt5,可以通过以下命令设置默认使用Qt4:
```bash
sudo update-alternatives --config qmake
```
然后选择对应的Qt4版本(通常路径为`/usr/bin/qmake-qt4`)。
#### 3. **在CMake中显式指定Qt4路径**
在项目的CMake配置中,可以显式指定Qt4的路径。根据引用[3]中的方法,在CMakeLists.txt中添加以下代码(替换为实际Qt4路径):
```cmake
set(QT_QMAKE_EXECUTABLE "/usr/bin/qmake-qt4")
set(QT_MOC_EXECUTABLE "/usr/bin/moc-qt4")
set(QT_RCC_EXECUTABLE "/usr/bin/rcc-qt4")
set(QT_UIC_EXECUTABLE "/usr/bin/uic-qt4")
```
或者,在运行`catkin_make`之前通过CMake变量传递:
```bash
catkin_make -DQT_QMAKE_EXECUTABLE=/usr/bin/qmake-qt4 \
-DQT_MOC_EXECUTABLE=/usr/bin/moc-qt4 \
-DQT_RCC_EXECUTABLE=/usr/bin/rcc-qt4 \
-DQT_UIC_EXECUTABLE=/usr/bin/uic-qt4
```
#### 4. **修改项目CMakeLists.txt(如果上述方法无效)**
根据引用[3]和[4],在项目CMakeLists.txt中强制查找Qt4:
```cmake
find_package(Qt4 REQUIRED)
```
并确保在查找Qt之前设置上述变量。
#### 5. **完全移除Qt5(不推荐)**
如果项目完全不需要Qt5,可以尝试卸载Qt5(但可能影响其他软件):
```bash
sudo apt-get remove qt5-default
```
然后重新安装Qt4(如步骤1)。
### 验证方法
运行以下命令检查qmake版本:
```bash
qmake --version
```
输出应为Qt4版本(如4.8.7)。
### 注意事项
- 如果项目同时需要Qt4和Qt5,建议使用虚拟环境或容器隔离编译环境。
- STDR仿真器较旧,可能只支持Qt4[^4]。
§§相关问题§§
1. 如何在同一系统中同时管理多个Qt版本?
2. 使用Qt4开发ROS项目有哪些注意事项?
3. 如何创建隔离的编译环境以避免库版本冲突?</think>### 解决 CMake 错误:Found unsuitable Qt version "5.12.8", requires Qt 4.x
此错误发生在编译需要 Qt4 的项目(如 `stdr_simulator`)时,系统检测到的 Qt5 版本不兼容。以下是完整的解决方案:
#### 1. **安装 Qt4 开发包**
首先确保 Qt4 已安装:
```bash
sudo apt-get update
sudo apt-get install qt4-default libqt4-dev
```
#### 2. **设置 Qt4 为默认版本**
通过 `update-alternatives` 配置系统默认使用 Qt4:
```bash
sudo update-alternatives --config qmake
```
选择 Qt4 对应的选项(通常为 `/usr/bin/qmake-qt4`)
#### 3. **在 CMake 中显式指定 Qt4**
在编译命令中强制指定 Qt4 路径(根据您的实际路径调整):
```bash
catkin_make -DQT_QMAKE_EXECUTABLE=/usr/bin/qmake-qt4 \
-DQT_MOC_EXECUTABLE=/usr/bin/moc-qt4 \
-DQT_UIC_EXECUTABLE=/usr/bin/uic-qt4
```
#### 4. **修改项目 CMakeLists.txt(可选)**
如果上述无效,在项目的 `CMakeLists.txt` 中添加:
```cmake
# 在 find_package() 之前添加
set(QT_QMAKE_EXECUTABLE "/usr/bin/qmake-qt4")
set(QT_MOC_EXECUTABLE "/usr/bin/moc-qt4")
set(QT_UIC_EXECUTABLE "/usr/bin/uic-qt4")
find_package(Qt4 REQUIRED) # 强制使用 Qt4
```
#### 5. **完全移除 Qt5(最后手段)**
⚠️ 注意:可能影响其他依赖 Qt5 的软件
```bash
sudo apt-get remove qt5-default
sudo apt-get autoremove
sudo apt-get install qt4-default
```
### 验证解决方案
```bash
# 检查 qmake 版本
qmake --version
# 应输出:QMake version 2.01a (Qt 4.x.x)
# 重新编译
catkin_make clean
catkin_make
```
### 故障排除表
| 现象 | 解决方案 |
|------|----------|
| 找不到 qmake-qt4 | 运行 `sudo apt-get install qt4-qmake` |
| CMake 仍报 Qt5 错误 | 在 CMake 命令添加 `-DFORCE_QT4=ON` |
| 编译后 GUI 异常 | 安装兼容库:`sudo apt-get install libqt4-opengl` |
> **关键提示**:STDR 仿真器等旧版 ROS 包通常需要 Qt4[^4]。如果必须保留 Qt5,考虑使用 Docker 容器隔离编译环境。
阅读全文
相关推荐

















