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://xiahunao.cn/news/3268677.html

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

相关文章

系统架构设计师②:操作系统

系统架构设计师②:操作系统 操作系统作用 ①管理系统的硬件、软件、数据资源 ②控制程序运行 ③人机之间的接口 ④应用软件与硬件之间的接口 进程管理 进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。它由程序块、…

FastAPI(七十八)实战开发《在线课程学习系统》接口开发-- 评论

源码见:"fastapi_study_road-learning_system_online_courses: fastapi框架实战之--在线课程学习系统" 梳理下思路 1.判断是否登录 2.课程是否存在 3.如果是回复,查看回复是否存在 4.是否有权限 5.发起评论 首先新增pydantic模型 class Cour…

如何系统的学习C++和自动驾驶算法

给大家分享一下我的学习C和自动驾驶算法视频,收藏订阅都很高。打开下面的链接,就可以看到所有的合集了,订阅一下,下次就能找到了。 【C面试100问】第七十四问:STL中既然有了vector为什么还需要array STL中既然有了vec…

C#如何引用dll动态链接库文件的注释

1、dll动态库文件项目生成属性中要勾选“XML文档文件” 注意:XML文件的名字切勿修改。 2、添加引用时XML文件要与DLL文件在同一个目录下。 3、如果要是添加引用的时候XML不在相同目录下,之后又将XML文件复制到相同的目录下,需要删除引用&am…

VUE3学习第三篇:报错记录

1、在我整理好前端代码框架后,而且也启动好了对应的后台服务,访问页面,正常。 2、报错ReferenceError: defineModel is not defined 学到这里报错了 在vue网站的演练场,使用没问题 但是在我自己的代码里就出问题了 3、watchEffec…

企业公户验证API如何使用JAVA、Python、PHP语言进行应用

在纷繁复杂的金融与商业领域,确保每笔交易的安全与合规是至关重要的。而企业公户验证API,正是这样一位默默守护的数字卫士,它通过智能化的手段,简化了企业对公账户验证流程,让繁琐的审核变得快捷且可靠。 什么是企业公…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第五十七章 Linux中断实验

i.MX8MM处理器采用了先进的14LPCFinFET工艺,提供更快的速度和更高的电源效率;四核Cortex-A53,单核Cortex-M4,多达五个内核 ,主频高达1.8GHz,2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

普元开源OBS仓颉版客户端,相较于Java实现桶创建接口平均响应时长缩小46.8%

关于作者:许飞锋,资深软件工程师,参与公司多个核心产品的设计与开发,对中间件相关技术及组件研究较多,对仓颉语言特性及神农框架理解较深入。 01‍ 关于OBS仓颉版客户端 1.1 组件定位 对象存储服务软件开发工具包&…

Canvas生成动画---显示一组彩色气泡

一、JS版本 <!--* Author: LYM* Date: 2024-07-26 13:51:47* LastEditors: LYM* LastEditTime: 2024-07-26 16:14:40* Description: Please set Description --> <!DOCTYPE html> <html> <head><title>canvas动态气泡</title><style&g…

Spring Boot的Web开发

目录 Spring Boot的Web开发 1.静态资源映射规则 第一种静态资源映射规则 2.enjoy模板引擎 3.springMVC 3.1请求处理 RequestMapping DeleteMapping 删除 PutMapping 修改 GetMapping 查询 PostMapping 新增 3.2参数绑定 一.支持数据类型: 3.3常用注解 一.Request…

Spark+实例解读

第一部分 Spark入门 学习教程&#xff1a;Spark 教程 | Spark 教程 Spark 集成了许多大数据工具&#xff0c;例如 Spark 可以处理任何 Hadoop 数据源&#xff0c;也能在 Hadoop 集群上执行。大数据业内有个共识认为&#xff0c;Spark 只是Hadoop MapReduce 的扩展&#xff08…

22 Python常用内置函数——枚举

enumerate() 函数用来枚举可迭代对象中的元素&#xff0c;返回可迭代的 enumerate 对象&#xff0c;其中每个元素都是包含索引和值的元组。 print(enumerate(abcd)) print(list(enumerate(abcd))) # 枚举字符串中的元素 print(list(enumerate([hello, world]))) # 枚举列表中…

【数据结构】:大厂面试经典链表OJ题目详解

反转链表 206. 反转链表 - 力扣&#xff08;LeetCode&#xff09; 思路解透 本题就是通过不停地将最先的 head 节点位置的后一位插到最前面&#xff0c;完成链表的反转 本题需要两个节点变量 cur&#xff1a;其任务就是定位到原 head 节点位置的前一位&#xff0c;然后将自己…

百日筑基第二十八天-23种设计模式-行为型总汇

百日筑基第二十八天-23种设计模式-行为型总汇 文章目录 百日筑基第二十八天-23种设计模式-行为型总汇前言模板方法模式简介模板方式的特点模板方法模式结构类图模板方式模式案例分析模板方法模式应用源码分析模板方法模式的注意事项和细节 迭代器模式迭代器模式结构类图迭代器模…

git配置环境变量

一.找到git安装目录 打开此git安装目录下的bin文件&#xff0c;复制此文件路径 二.配置环境变量 2.1 右键点击此电脑的属性栏 2.2 点击高级系统配置 2.3 点击环境变量 2.4 按图中步骤进行配置 三.配置完成 win r 输入cmd打开终端 终端页面中输入 git --version 如图所示…

给定日期计算时间(2025新年倒计时)

目录 1.安装所需安装包 2.查看安装包是否安装成功 ​ 3.使用 Pandas 读取数据文件 4.定义图像背景 5.matplotlib输出 6.当前指定格式时间 7.2025新年倒计时 1.安装所需安装包 pip install 包名 2.查看安装包是否安装成功 python -m pip list ​ 3.使用 Pandas 读取数…

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

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

Redis从入门到超神-(十二)Redis监听Key的过期事件

前言 试想一个业务场景&#xff0c;订单超过30分钟未支付需要做自动关单处理,修改订单状态&#xff0c;库存回退等&#xff0c;你怎么实现&#xff1f;方案一&#xff1a;可以使用定时任务扫表&#xff0c;通过支付状态和下单时间来判断是否支付过期。但是这样的方案是非常消耗…

推荐一款.NET开源、简洁易用的Windows桌面小说阅读应用

前言 今天大姚给大家分享一款.NET开源、免费、简洁易用的Windows桌面小说阅读应用(是原生的 Windows 应用&#xff0c;为 Windows 11 系统设计)&#xff1a;CleanReader.Desktop。 该应用适合喜欢阅读网文或者是本地轻量阅读的用户。 系统要求 操作系统&#xff1a;Windows 11…

Llama + Dify,在你的电脑搭建一套AI工作流

theme: smartblue 点赞 关注 收藏 学会了 本文简介 最近字节在推Coze&#xff0c;你可以在这个平台制作知识库、制作工作流&#xff0c;生成一个具有特定领域知识的智能体。 那么&#xff0c;有没有可能在本地也部署一套这个东西呢&#xff1f;这样敏感数据就不会泄露了&…