git等常用工具以及cmake

一、将git中的代码克隆进电脑以及常用工具介绍

1.安装git        

首先需要安装git

sudo apt install git

        注意一定要加--recursive,因为文件中有很多“引用文件“,即第三方文件(库),加入该选项会将文件中包含的子模块(Submodule)也一并克隆下来,否则该部分就是空文件夹。

克隆成功

 2.常用工具(需自行sudo安装):

(1)htop:相当于Windows的任务管理器,可以看到程序每个节点的内存占用情况,提供优化方向。

(2)terminator:超级终端,相对于原来的终端可以分栏(ctrl+shift+e/o),alt+方向键可以选择在哪个终端写字,同时操作可以通过alt+a全选。ctrl+shift+x放大缩小。

(3)VScode:按指令下载即可

 在对应文件夹目录下输入code .即可打开当前目录

(4)ros(安装的话最好是桌面版):机器人操作系统。正常需要官网下载配置,但是可以一键安装,详见下篇博文

一键安装ROSicon-default.png?t=N7T8https://blog.csdn.net/LNSTOP/article/details/126599501

二、使用cmake

第一节中使用 GCC 编译器

        我们通常使用一个叫做“GCC”的编译器来把我们的 C++ 代码变成计算机可以运行的程序。举个例子,如果我们有一个简单的 C++ 程序,我们可以用 g++ 这个命令来编译它。

大型项目的复杂性

        当项目变得很大时,会有许多文件,每个文件里都有不同的类。这些类之间会有相互依赖的情况,比如一个类需要用到另一个类的功能。有时候我们需要把一些文件编译成可以运行的程序(即可执行文件),而有些文件则需要编译成库文件,方便多个程序共享。

手动编译的问题

        如果只用 g++ 命令来编译整个项目,就需要输入很多指令来告诉编译器应该编译哪些文件。这样做不仅很麻烦,还很容易出错。

引入 CMake

        为了解决这些问题,我们使用了一个工具叫做“CMake”。CMake 可以帮我们自动生成一个叫“Makefile”的文件,这个文件包含了所有编译的指令。 有了 Makefile 后,我们只需要运行一个简单的命令 make 就能完成整个项目的编译,不需要手动输入一堆指令了。

1.安装cmake

sudo apt install cmake

安装成功后输入cmake --version会显示版本号,如下图

2.基本概念和简单的 CMake 语法:

CMakeLists.txt 文件

CMake 通过读取项目中的 CMakeLists.txt 文件来确定如何构建项目。每个目录都可以包含一个 CMakeLists.txt 文件,用来描述该目录下的构建规则。

配置文件基本结构

cmake_minimum_required(VERSION 3.10)
project(MyProject)add_executable(my_executable main.cpp)
cmake_minimum_required 命令
  • 设置 CMake 的最低版本要求:
    cmake_minimum_required(VERSION 3.10)
project 命令
  • 定义项目名称:
    project(MyProject)
add_executable 命令
  • 创建可执行文件:
    add_executable(my_executable main.cpp)
    这里 my_executable 是生成的可执行文件的名字,main.cpp 是包含主函数的源文件。

 具体如下图所示:(版本不能过低,否则会报错)

cmake.进行工程分析

 用make命令对工程进行编译

         随后我们发现在目录下多出名为helloslam的可执行文件,执行后即可输出

         当源文件与代码文件很多的时候,相比于一行一行写g++而言,cmake就会很方便了,只需要维护一个CMakelist.txt文件即可。

3.更好的编译方法 

        如上图所示,整个过程结束后,我们发现多了很多奇奇怪怪的文件,一个一个删除又过于麻烦,更好的做法就是让这些中间文件都在一个中间目录中,编译成功后把整个目录删除即可。

更常见的编译cmake工程做法如下:

mkdir build
cd build
cmake ..
make

 随后直接再这个文件夹中执行make后编译即可。中间文件全都在build目录中。

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

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

相关文章

C嘎嘎浅谈模板

这篇文章给大家介绍一下c嘎嘎内存管理和模板,那么我们直接进入正题 c/c的程序内存分布 这里的了解一下即可 new和delete的定义和操作 格式:类型* 对象名 new 类型; 数组(对象)定义格式:类型* 对象名 new 类型[元素个数]&…

NOIP图论 最小生成树——Prim算法(详细图解)

最小生成树的概念 经典题目 prim算法简介 prim算法解析 (详细图解) 代码实现 代码实战 最小生成树的概念 在一给定的无向图G (V, E) 中,(u, v) 代表连接顶点 u 与顶点 v 的边,而 w(u, v) 代表此的边权重,若存在 …

Kali中docker与docker-compose的配置

权限升级 sudo su 升级为root用户 更新软件 apt-get update安装HTTPS协议和CA证书 apt-get install -y apt-transport-https ca-certificates下载docker apt下载docker apt install docker.io 验证docker安装是否成功 查版本 docker -v 启动docker systemctl start …

QT自定义无边框窗口(可移动控制和窗口大小调整)

QT是一个功能强大的跨平台开发框架,它提供了丰富的界面设计工具和组件。在界面开发中,QT窗口自带的标题栏无法满足我们的需求。我们就需要自定义无边框窗口,包括自定义标题栏和窗口大小调整功能。本文将介绍如何在QT中实现这些功能。 一、简…

Java代码基础算法练习-计算握手次数-2024.07.27

任务描述&#xff1a; 有n(0<n<50)个同学聚会&#xff0c;如果见面时&#xff0c;每个人都要跟其他人握手1次&#xff0c;请计算一共握手多少次? 解决思路&#xff1a; 为了计算在一次聚会上 n 个人相互之间握手的总次数&#xff0c;我们可以采用组合数学的方法。给定 …

【QT】TCP

目录 核心API 示例&#xff1a;服务器和客户端信息互发 服务器代码实现 第一步&#xff1a;创建QTcpServer对象的实例 第二步&#xff1a;绑定信号槽&#xff0c;处理新的连接 第三步&#xff1a;绑定并监听端口号 客户端代码实现 第一步&#xff1a;创建socket对象的实…

financial是“财务”吗-《分析模式》漫谈14

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 “Analysis Patterns”的Preface&#xff08;前言&#xff09;有这么一句&#xff1a; David Creager, Steve Shepherd, and their team at Citibank worked with me in developing t…

鱼哥好书分享活动第27期:看完这篇《云原生安全》了解云原生环境安全攻防实战技巧!

鱼哥好书分享活动第27期&#xff1a;看完这篇《云原生安全》了解云原生安全攻防实战技巧&#xff01; 主要内容&#xff1a;读者对象&#xff1a;本书目录&#xff1a;了解更多&#xff1a;赠书抽奖规则: 当前全球数字化的发展逐步进入深水区&#xff0c;云计算模式已经广泛应用…

免费【2024】springboot 超市在线销售系统的设计与实现

博主介绍&#xff1a;✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围&#xff1a;SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化…

【MATLAB源码-第238期】基于simulink的三输出单端反激flyback仿真,通过PWM和PID控制能够得到稳定电压。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 概述 反激变换器是一种广泛应用于电源管理的拓扑结构&#xff0c;特别是在需要隔离输入和输出的应用中。它的工作原理是利用变压器的储能和释放能量来实现电压转换和隔离。该图展示了一个通过脉宽调制&#xff08;PWM&#…

7.24 补题

C 小w和大W的决斗 链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源&#xff1a;牛客网 题目描述 小w和大W为了比出谁更聪明。决定进行一场游戏。游戏内容如下: 两人轮流操作&#xff0c;小w先进行操作&#xff0c;每次操作可以选择下列两个其一: 选择数组中的一…

深度解析Linux-C——结构体(初始化,结构体数组,结构体大小,位段操作,联合体,内存对齐,C的预处理,宏和带参宏,条件编译)

目录 结构体的三种初始化 结构体的两种引用 结构体数组 结构体大小 结构体实现位段操作 联合体 内存对齐 C的预处理 带参宏 条件编译 结构体的三种初始化 定义如下结构体 struct student {char name[100]; int age; float height; } ; 1、定义变量时初始化 s…

tof系统标定流程步骤详解

1、tof标定概述 系统校准是一个减少ToF系统中系统误差影响的过程,如图1.1所示。本文件旨在介绍校准方法、设备和软件 1.1 系统误差 1.1.1 周期误差 谐波失真导致的相位(距离)相关误差。 1.1.2 固定相位模式噪声 由于解调信号的时延取决于可见像素位置以及VCSEL和传感器…

【Golang 面试基础题】每日 5 题(十)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/UWz06 &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏…

【机器学习】解开反向传播算法的奥秘

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 解开反向传播算法的奥秘反向传播算法的概述反向传播算法的数学推导1. 前向传播2…

Linux进程——程序地址空间详解

文章目录 程序地址空间地址空间与物理内存什么是程序地址空间管理程序地址空间虚拟地址与物理地址的映射页表的结构及其作用程序地址空间的作用 程序地址空间 我们之前学习内存的时候&#xff0c;有说内存的分布大概是这样的 其中堆由下而上&#xff0c;栈由上而下 除此之外&…

LeetCode:删除排序链表中的重复元素(C语言)

1、问题概述&#xff1a;给定一个已排序链表的头&#xff0c;删除重复元素&#xff0c;返回已排序的链表 2、示例 示例 1&#xff1a; 输入&#xff1a;head [1,1,2] 输出&#xff1a;[1,2] 示例 2&#xff1a; 输入&#xff1a;head [1,1,2,3,3] 输出&#xff1a;[1,2,3] 3…

2024年国际高校数学建模大赛(IMMCHE)问题A:金字塔石的运输成品文章分享(仅供学习)

2024 International Mathematics Molding Contest for Higher Education Problem A: Transportation of Pyramid Stones&#xff08;2024年国际高校数学建模大赛&#xff08;IMMCHE&#xff09;问题A&#xff1a;金字塔石的运输&#xff09; 古埃及金字塔石材运输优化模型研究…

2024最新Selenium面试题(附带答案),建议收藏备用

一.你在TestNG中使用了哪些注解&#xff1f; TestBeforeSuiteAfterSuiteBeforeTestAfterTestBeforeClassAfterClassBeforeMethodAfterMethod 二.如何从Excel中读取数据&#xff1f; FileInputStream fs new FileInputStream(“excel文件路径”); Workbook wb WorkbookFact…

探索智慧校园资产入库功能,构建高效校园资产管理体系

在智慧校园的资产管理框架下&#xff0c;资产入库功能作为资产生命周期管理的开端&#xff0c;扮演着至关重要的角色。这一功能确保了新购置或转入的资产能够迅速而准确地被记录在系统中&#xff0c;从而无缝融入日常的管理流程。当资产入库时&#xff0c;系统要求详细登记一系…