# clion 教程二

clion 教程二

参考传送门

clion普通C++教程

1.打开clion–》C++Executable–》选择路径并修改工程名称(最好用英文)和C++语言标准:C11–》CMakeLists.txt 查看是否正确:
cmake_minimum_required(VERSION 3.18)
project(工程名称)
set(CMAKE_CXX_STANDARD 11)
add_executable(工程名称 文件名称)
注意:如工程名称:three pigs,此处工程名称为three_pigs
不用怕,cmakelist,自动生成;
标准C++程序模板:

#include<iostream>
#include <unistd.h>//一定按Enter键,不然库导入不了
using namespace std;
int main()
{


cout<<hello<<endl;
pause();

return 0;
}

clion与ros教程

使用Clion调试编写ROS程序传送门1

1.基础篇
1).创建ros 工作空间
mkdir -p ~/空间名/src
cd ~/空间名/src
catkin_init_workspace
catkin_create_pkg 包名 std_msgs rospy roscpp
cd ~/空间名
catkin_make
source devel/setup.bash

2)…编写ros程序
cd /空间名/src/包名/src

编写.cpp代码:
xxxxxxxxxxxx
xxxxxxxxxxxx

如:
talker.cpp
#include “ros/ros.h”
#include “std_msgs/String.h”
#include

int main(int argc, char **argv)
{
ros::init(argc, argv, “talker”);
ros::NodeHandle n;
ros::Publisher chatter_pub = n.advertise<std_msgs::String>(“chatter”, 1000);
ros::Rate loop_rate(10);
int count = 0;
while (ros::ok())
{
std_msgs::String msg;
std::stringstream ss;
ss << “xiao qiu slam bi ji " << count;
msg.data = ss.str();
ROS_INFO(”%s", msg.data.c_str());
chatter_pub.publish(msg);
ros::spinOnce();
loop_rate.sleep();
++count;
}
return 0;
}

listener.cpp
#include “ros/ros.h”
#include “std_msgs/String.h”
void chatterCallback(const std_msgs::String::ConstPtr& msg)
{
ROS_INFO(“I heard: [%s]”, msg->data.c_str());
}
int main(int argc, char **argv)
{
ros::init(argc, argv, “listener”);
ros::NodeHandle n;
ros::Subscriber sub = n.subscribe(“chatter”, 1000, chatterCallback);
ros::spin();
return 0;
}

编写编译文件CMakeLists.txt
camke_minimum_required(VERSION 3.0.2)
project(包名)

set( CMAKE_BUILD_TYPE debug )

find_package(catkin REQUIRED COMPONENTS roscpp rospy std_msgs genmsg)

generate_messages(DEPENDENCIES std_msgs)

catkin_package()

include_directories( include ${catkin_INCLUDE_DIRS} )

add_executable(talker src/talker.cpp)
target_link_libraries(talker ${catkin_LIBRARIES})
add_dependencies(talker 包名_generate_messages_cpp)

add_executable(listener src/listener.cpp)
target_link_libraries(listener ${catkin_LIBRARIES})
add_dependencies(listener 包名_generate_messages_cpp)

重新编译一下:
cd ~/空间名
catkin_make
加入环境变量;source ./devel/setup.bash

找到并启动Clion的脚本文件:locate clion.sh
启动Clion:sh PATH_TO_CLION/bin/clion.sh

File->Open选择当ROS工作空间下面的CMakeLists.tx文件
以工程的形式打开选择Open as Project
打开Clion的终端输入roscore;启动.cpp
;
2.如何使用clion调试ROS包可靠篇
参考传送门

以下是clion的通用配置

1.在Clion里安装ROS的插件

打开Clion,选择file->settings->plugins->Marketplace
在搜索框里搜索ros-robot operating,选择robot framework support, hatchery, ROS support,然后点击安装,安装完以后重启Clion

2.下载安装好clion后,先配置下clion的setting

更改cmake为系统安装版本,选择File -> Settings -> Build, Execution, Deployment -> Toolchains
更改Cmake和gdb为ubuntu自带的版本,
编译使用的cmake版本
默认情况下,CLion编译使用的CMake是其内置的一个版本,而使用这个版本的CMake进行编译时会报出一些莫名其妙的错误,命令行中catkin_make明明可以正常编译,而这里就是会失败。解决这个问题的办法就是将CLion中的CMake更换为系统中的CMake,具体设置在Settings->Build->Toolchains,可以看到其中的CMake默认为Bundled,我们需要手动指定为系统中的CMake,具体看下图:
在这里插入图片描述

接下来是对某个ros工程进行配置(如果没有报错,省略第三步)*

3.配置ros工程

3.1在catkin_ws下source devel/set.bash,使得终端读入该ros工作空间的环境变量,然后在终端输入clion,启动clion:
source ./devel/setup.bash
locate clion.sh
sh PATH_TO_CLION/bin/clion.sh

3.2**更改debug的配置,**选择File -> Settings -> Build, Execution, Deployment -> CMake
这个配置是只用来配置当前project, 换了其它project要重新配置debug
在这里插入图片描述

4.将修改后的代码变为自己的

4.1、编译过程中生成的文件不是位于build和devel文件夹下,编译生成的文件在每个package下面的cmake-build-debug文件夹下,所以需要修改Settings->Build->CMake中的设置,将“CMake options”一栏修改为“-DCATKIN_DEVEL_PREFIX:PATH=/home/user_name/workspace_name/devel”;将"Generation path"一栏修改为“/homeuser_name/workspace_name/build”。这样就能使编译过程中生成的文件位于build和devel文件夹下了。修改途径如下:

在这里插入图片描述
参考传送门

5.对单独包进行编译

**1.有一个注意的细节是用clion打开工程的路径,要选择catkin_ws/src下的CMakeList.txt,**以工程的形式打开选择Open as Project
打开Clion的终端输入roscore;启动.cpp;

这样在这个工作空间下的所有包都可以单独编译,编译生成的文件在每个package下面的cmake-build-debug文件夹下,这样不会与build产生冲突,只单用调试,程序调试完成后,运行时仍然使用的是catkkin_make进行编译.

每个包单独编译的方法: 在左侧目录中,右键选择package 1的CMakeList.txt, Load CMake project就可以看到右上角的可执行文件名称不一样,变成对应CMakeList.txt生成的可执行文件名称

在这里插入图片描述
在这里插入图片描述
1.2 登录整个工作空间的编译环境,就选中刚进工作空间的CMakeLists.txt–>Load CMake Project; 登录单个包的编译环境。选中刚进包的CMakeLists.txt–>Load CMake Project;

2.解决clion头文件找不到问题
是因为catkin_make编译的msg文件在devel中,要给其添加路径
在File -> Settings -> Build, Execution, Deployment -> CMake配置中设置CMake option为
-DCMAKE_BUILD_TYPE=Debug -DCATKIN_DEVEL_PREFIX:PATH=/home/wanghuohuo/catkin_clion/devel
或者
-DCATKIN_DEVEL_PREFIX:PATH=/home/wanghuohuo/catkin_clion/devel

3.出现这个黄色提示This file doesnot belong to any project target ,code insisht features might not word properly
是因为右上角载入的是co_sensor_fusion的工程,而该文件是multithread工程,所以会出现这个提示,Load multithread的CMakeList.txt即可

在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值