Ubuntu下安装Clion

news2024/10/6 16:20:52

前言

CLion 是一款由 JetBrains 开发的 C++ 集成开发环境(IDE),它拥有许多强大的功能,如代码自动完成、调试器、版本控制等等。CLion本身是收费软件,但如果是学生的话可以申请免费使用。
测试安装环境:Ubuntu18、Ubuntu22

1.Clion安装

(1)官方下载安装包

官方下载安装包

image-20230409165524190

(2)解压安装包

gzip -d CLion-2023.1.1.tar.gz
tar -xvf CLion-2023.1.1.tar

(3)替换jbr文件夹

jetbrains全家桶在Ubuntu中使用会出现输入法不跟随的问题,需要将源文件中的jbr文件夹替换来解决

先在github上下载好别人重新编译过的jbr文件:(如果Clion版本越新,下载的jbr版本也要越新,我使用的是Clion2023版本,下载的jbr是release 17.0.6版本)

image-20230409170019866

下载好后解压重命名为jbr

image-20230409170135438

然后替换到Clion安装包中的jbr文件夹:

image-20230409170207386

(4)将安装包复制到\opt

sudo cp -rf CLion-2023.1.1 /opt

(5)执行安装程序

cd /opt/CLion-2023.1.1/bin
sh clion.sh

(6)创建桌面快捷键
(初始安装好的话,应该是英文界面,下图是我安装了中文插件)
image-20230409170428600

(7)下载汉化版插件

在clion的设置中的plugs选项中下载汉化包插件:

image-20230409170521043

2.Clion配置项目

(1)编译器配置

image-20230409170909759

(2)cmake配置

image-20230409171021114

(3)clion是如何运行项目的

clion是通过cmake编译运行项目的,而cmake编译运行项目可以分为三个步骤:

一是cmake <source tree>,比如cmake ..,用于生成了项目文件project files;

二是cmake --build .build的功能就是依据当前系统的编译器自适应的构建项目(或者说编译链接项目),当你明确知道自己系统的编译器是Unix Makefiles,也可以直接使用make进行项目构建;

三是运行编译好的可执行文件,比如./main;

回归到clion中,前面两个步骤其实就是配置编译器的路径和cmake的命令行参数,配置好后运行一个项目其实也和cmake一样分为三个步骤:

一是cmake ..,clion在打开项目时会自动cmake ..一遍,默认是生成在cmake-build-debug文件夹中,当然也可以手动执行:右键项目,选择reload cmake project;每当你修改了CMakeLists.txt文件后都需要reload cmake project,所以我建议设置一个reload cmake project的快捷键;

二是cmake --build .,就是对应clion中的build按钮的功能,如果报错说:Error: could not load cache,那就是你没有完成步骤一的reload cmake project

image-20230409195358857

三是./main,clion中的run按钮,其实run按钮会同时完成步骤二和步骤三,也就是run会先build,然后运行可执行文件;

image-20230409195531739
最后一个七星瓢虫一样的图案就是调试代码,比起vscode调试代码还要配置半天要简单多了。

3.Clion调试ROS项目

调试一般的C++项目,直接点击调试按钮即可,如果是ROS项目则还需要一些步骤。
(1)修改Clion的启动方式

由于ROS的功能包需要先source,所以得把clion的启动方式改为bash启动,这样会先自动source功能包,否则会出现错误:

message(FATAL_ERROR “find_package(catkin) failed. catkin was neither found in the workspace nor in the CMAKE_PREFIX_PATH. One reason may be that no ROS setup.sh was sourced before.”)

修改方法:

sudo gedit /usr/share/applications/jetbrains-clion.desktop

修改里面的Exec行,修改后的内容如下:

[Desktop Entry]
Version=1.0
Type=Application
Name=CLion
Icon=/opt/clion-2023.1.1/bin/clion.svg
#Exec="/opt/clion-2023.1.1/bin/clion.sh" %f
Exec=bash -i -c "/opt/clion-2023.1.1/bin/clion.sh" %f
Comment=A cross-platform IDE for C and C++
Categories=Development;IDE;
Terminal=false
StartupWMClass=jetbrains-clion
StartupNotify=true

(2)运行clion,打开ROS项目

选择CMakeLists文件时,选择为catkin_workspace/src/CMakeLists.txt文件,不要选择子功能包里面的了

(3)修改CMake配置文件

-DCATKIN_DEVEL_PREFIX=../devel
../build

image-20230606210604148
(4)调试ROS节点程序
Clion打开ROS项目后,会自动加载显示该ROS项目的全部节点:

image-20230724093903956

选择要调试的节点,此外如果启动该节点还需要程序实参,可以如下添加实参:

image-20230724094144466

image-20230724094157834

之后需要重新构建程序:

image-20230724094415204

构建成功后,可以点击要调试的部分,并启动调试:(调试的时候可能需要终端启动roscore)

image-20230724094456931

image-20230724094507206

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/977155.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue + Element UI 前端篇(十):动态加载菜单

Vue Element UI 实现权限管理系统 前端篇&#xff08;十&#xff09;&#xff1a;动态加载菜单 动态加载菜单 之前我们的导航树都是写死在页面里的&#xff0c;而实际应用中是需要从后台服务器获取菜单数据之后动态生成的。 我们在这里就用上一篇准备好的数据格式Mock出模…

哈希的应用——位图

文章目录 前言1. 面试题思考2. 位图2.1 位图的概念2.2 思路讲解及代码实现结构定义构造函数set和reset接口实现set和reset测试观察test接口实现test接口测试思考 3. 位图的应用习题1习题2习题3 4. 总结5. 源码5.1 bitset.h5.2 Test.c 前言 前面的文章里我们学习了哈希表&#x…

Etherpad安装手册(win10 64位电脑)

Etherpad安装手册 我使用的为win10 64位电脑 一、按照教程下载安装Etherpad 按照该文章下载安装&#xff0c;下面记录我的过程 1.下载etherpad 2.解压缩etherpad到d盘 3.双击start.bat&#xff0c;启动编辑器服务 注意&#xff1a;可能出现问题如下图&#xff0c;跳转二 4.在…

数据库管理-第100期 Refreshable Clone PDBs(20230905)

数据库管理-第100期 Refreshable Clone PDBs&#xff08;20230905&#xff09; 上周五&#xff0c;9月1日&#xff0c;我于上海Oracle办公室OU考场完成了19c OCM Upgrade考试&#xff0c;感受就是&#xff0c;很多新特性考的比想象的更加深入&#xff0c;希望最终结果是好的吧…

AVL树的旋转与插入

题&#xff1a;点我 题目大意&#xff1a;旋转 A V L AVL AVL树 在 A V L AVL AVL操作中主要有两种主要操作&#xff0c;分别是 L L LL LL和 R R RR RR&#xff0c;其中 L L LL LL的旋转本质是希望发生以下的转变 而 R R RR RR的本质是希望发生以下的转变&#xff1a; 如我们…

【面试题】如何实现数组去重的?有几种方式?

前端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★ 地址&#xff1a;前端面试题库 【国庆头像】- 国庆爱国 程序员头像&#xff01;总有一款适合你&#xff01; 1. 方法一&#xff1a;利用两层循环数组的splice方法 通过两层循环对数组…

TTransportException SASL authentication not complete

今天遇见了一个异常&#xff0c;但是发现是自己智障了 但还是记录一下 在close的时候先close了conn再close的statement导致报的这个错

工业、交通、电力、水务】LEAP模型应用及碳排放预测

中文名&#xff1a;LEAP模型 外文名&#xff1a;Long Range Energy Alternatives Planning System/ Low emission analysis platform LEAP模型[1]允许研究者根据研究目的、数据可获取度、研究对象特点等灵活构建模型结构&#xff0c;十分适用于能源数据不全面情况&#xff0c…

网络安全-IP地址信息收集

本文为作者学习文章&#xff0c;按作者习惯写成&#xff0c;如有错误或需要追加内容请留言&#xff08;不喜勿喷&#xff09; 本文为追加文章&#xff0c;后期慢慢追加 IP反查域名 http://stool.chinaz.com/same https://tools.ipip.net/ipdomain.php 如果渗透目标为虚拟主机…

HCIP自我重修总笔记

第一章.复习OSITCP/IP 模型 &#xff08;2023 9/5&#xff09; OSI 模型: 开放式系统互联参考模型 应用层&#xff1a;抽象语言-->编码表示层&#xff1a;编码--->二进制会话层&#xff1a;提供会话地址&#xff0c;建立应用程序端到端的会话 上三层为应用程序对数据加…

SQL注入 - 宽字节注入

文章目录 SQL注入 - 宽字节注入宽字节注入前置知识宽字节靶场实战判断是否存在SQL注入判断位数判显错位判库名判表名判列名 SQL注入 - 宽字节注入 靶场 sqli - labs less-32 宽字节注入主要是绕过魔术引号的&#xff0c;数据库解析中除了UTF-8编码外的所有编码如&#xff1a;G…

ctfshow 反序列化

PHP反序列化前置知识 序列化和反序列化 对象是不能在字节流中传输的&#xff0c;序列化就是把对象转化为字符串以便存储和传输&#xff0c;反序列化就是将字符串转化为对象 魔术方法 __construct() //构造&#xff0c;当对象new时调用 __wakeup() //执行unserialize()时&am…

结构体做函数参数

①值传递 ②地址传递 #include <iostream> #include <algorithm> #include <string> using namespace std; struct stu {int age;string name; }; void printStu(stu a) {cout << a.age << << a.name << endl; } void printstu(…

英语之美:用一句话解释句子结构

以下是一个包含主语、谓语、宾语、表语、定语、同位语、补足语和状语的扩展句子&#xff0c;使用 “I love you” 作为基础&#xff1a; “I, the person who truly loves you, consider our love a beautiful gift, and I love you more deeply with each passing day.” 在…

复制tr的一行数据或者复制数据使用,使用jq和php

效果图&#xff1a; 2.Html <!--复制的tr数据&#xff0c;s----------------------------------------------------------------------------------------------->{foreach from$arrs keykk itemvv} <tr><td style"text-align:center;" >1</t…

华为OD机试 - 关联子串 - 滑动窗口(Java 2023 B卷 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明4、换个思路 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A…

【C++】STL-函数对象-内建函数对象

0.前言 1.算术仿函数 #include <iostream> using namespace std;// STL-内建函数对象-算术仿函数 #include<functional> // 内建函数对象头文件//以下举例两个仿函数 -- negate and plus// negate 一元仿函数 取反仿函数 void test01() {negate<int>n;cout …

autojs修改顶部标题栏颜色

顶部标题栏的名字是statusBarColor 不是toolbar。难怪我搜索半天搜不到 修改之后变成这样了 代码如下&#xff1a; "ui"; importClass(android.view.View); importClass(android.graphics.Color); ui.statusBarColor(Color.parseColor("#ffffff")); ui.…

信息系统概述-生命周期-开发方法

信息系统概述-生命周期 考点分析信息系统概述信息系统分类企业目前所使用的具体的信息化系统信息系统的生命周期&#xff08;重要&#xff09;信息系统的开发方法&#xff08;重要&#xff09; 考点分析 每年都会考3分&#xff0c;2分会超纲 信息系统概述 信息系统分类 业务处理…

Redis——Java中的客户端和API

Java客户端 在大多数的业务实现中&#xff0c;我们还是使用编码去操作Redis&#xff0c;对于命令的学习只是知道这些数据库可以做什么操作&#xff0c;以及在后面学习到了Java的API之后知道什么方法对应什么命令即可。 官方推荐的Java的客户端网页链接如下&#xff1a; 爪哇…