QT 调试ROS 但是打开工程出现错误,找不到roscpp.cmake之类

本文介绍如何在QT中正确加载ROS环境变量,包括通过.desktop文件设置环境变量的方法及解决CMake编译时找不到ROS相关组件的问题。同时,还提到了确保安装必要ROS包的重要性。

关于 QT如何加载ROS的相应的环境变量,

[Desktop Entry]
Type=Application
Exec=/home/viki/Qt5.2.0/Tools/QtCreator/bin/qtcreator
Name=Qt Creator (Opensource)
GenericName=The IDE of choice for Qt development.
Icon=QtProject-qtcreator
Terminal=false
Categories=Development;IDE;Qt;
MimeType=text/x-c++src;text/x-c++hdr;text/x-xsrc;application/x-designer;application/vnd.qt.qmakeprofile;application/vnd.qt.xml.resource;text/x-qml;text/x-qt.qml;text/x-qt.qbs;

自己新建一个文本文档,填写这个内容,更改一个地方是Exec这个地方 加上bash -i -c 这个意思执行.bashrc。即加载source ros一些东西。

Exec=/home/viki/Qt5.2.0/Tools/QtCreator/bin/qtcreator
然后这个文本文档可以存在任何地方,比如放在桌面,然后文本文档的名称叫做
DigiaQtOpenSource-qtcreator.desktop

.desktop这个必须加上, 双击应该能直接执行,如果不能执行,则更改下权限,让其能执行。




但是 cmake的时候,就会出现各种问题,例如下面,找不到啥。很纠结。

其实一部分原因是 C编译器找不到,解决办法就是 mananger kits 自己做一个 看下几个图






按照这样的节奏应该能用,但是当你打开roscpp等东西还是找不到,这个原因是一个环境变量在作怪,就是叫做

CMAKE_PREFIX_PATH 这个鬼东西,这个是是啥呢,

Path used for searching by FIND_XXX(), with appropriate suffixes added.

Specifies a path which will be used by the FIND_XXX() commands. It contains the “base” directories, the FIND_XXX() commands append appropriate subdirectories to the base directories. So FIND_PROGRAM() adds /bin to each of the directories in the path, FIND_LIBRARY() appends /lib to each of the directories, and FIND_PATH() and FIND_FILE() append /include . By default it is empty, it is intended to be set by the project. See also CMAKE_SYSTEM_PREFIX_PATH, CMAKE_INCLUDE_PATH, CMAKE_LIBRARY_PATH, CMAKE_PROGRAM_PATH.

这是官方的说法,大概就是帮你找找环境变量。

如果我们在终端 echo $CMAKE_PREFIX_PATH,发现里面竟然有ros的路径,但是在QT里面没有!!!

这很奇怪,我没找到根本原因,我的解决办法就是,在bulid setting 里面增加一下就是了


cmake一下就搞定了。


还有必须提及一下,有时候找不到,是因为你没有安装包,在设置之前,检查自己装包了没。一般的roscpp包肯定有,但是一些其他的就不容乐观了。




### 配置CMake以正确定位QtCharts5Config.cmake文件 当遇到 `CMake` 无法到 `QtCharts5Config.cmake` 文件的问题时,通常是因为未正确设置 `CMAKE_PREFIX_PATH` 或者缺少必要的开发。以下是解决问题的方法: #### 设置 `CMAKE_PREFIX_PATH` 确保 `Qt5Charts` 的安装路径被添加到 `CMAKE_PREFIX_PATH` 中。可以通过以下方式实现: 1. **手动指定路径** 如果已知 `Qt5Charts` 安装的具体位置(例如 `/usr/lib/x86_64-linux-gnu/cmake/Qt5Charts`),可以在命令行运行 CMake 时通过 `-DCMAKE_PREFIX_PATH` 参数传递该路径: ```bash cmake -DCMAKE_PREFIX_PATH=/path/to/qt5 .. ``` 2. **在 `CMakeLists.txt` 中设置** 可以直接在项目的 `CMakeLists.txt` 文件中添加如下代码来设置前缀路径: ```cmake set(CMAKE_PREFIX_PATH "/path/to/qt5" ${CMAKE_PREFIX_PATH}) ``` #### 使用 `find_package` 查 Qt5Charts 在 `CMakeLists.txt` 文件中,确保正确调用了 `find_package` 来查 `Qt5Charts` 模块。示例如下: ```cmake find_package(Qt5 REQUIRED COMPONENTS Widgets Charts) ``` 如果模块名称不匹配或者缺失,则可能导致错误。 #### 确认 Qt5Charts 开发已安装 如果没有安装 `Qt5Charts` 的开发,即使设置了正确的路径也无法成功定位其配置文件。可以尝试重新安装或确认是否已经安装了对应的开发。对于基于 Debian 的系统,可以使用以下命令检查并安装: ```bash sudo apt install qtcharts5-dev ``` #### 示例完整的 `CMakeLists.txt` 配置 以下是一个针对 ROS2 和 Qt5 的典型项目配置示例[^4],其中含了对 `Qt5Charts` 的支持: ```cmake cmake_minimum_required(VERSION 3.5) project(MyProject LANGUAGES CXX) set(QT_VERSION_MAJOR 5 CACHE STRING "Major version of Qt") find_package(Qt5 REQUIRED COMPONENTS Core Gui Widgets Charts) add_executable(my_app src/main.cpp src/mainwindow.cpp include/mainwindow.h ui/mainwindow.ui ) target_link_libraries(my_app PRIVATE Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Gui Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::Charts ) # Optional: Set prefix path explicitly if needed if(NOT DEFINED ENV{QTDIR}) set(CMAKE_PREFIX_PATH "/opt/Qt/${QT_VERSION}" ${CMAKE_PREFIX_PATH}) endif() ``` #### 常见错误排查 - 错误提示类似于 `Could not find a package configuration file provided by "Qt5Charts"` 表明可能未正确安装 `Qt5Charts` 或者路径未正确设置。 - 若仍然存在问题,可打印调试信息查看实际搜索路径: ```cmake message(STATUS "CMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}") ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值