Linux项目自动化构建工具-make/Makefile以及git三板斧

这篇具有很好参考价值的文章主要介绍了Linux项目自动化构建工具-make/Makefile以及git三板斧。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、关于make/makefile的背景知识

是否会写make/makefile,从侧面反映了一个程序员是否具备完成大型工程的能力。一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作。makefile带来的好处就是——“自动化编译”,一旦写好,只需要一make命令,整个工程完全自动编译,极大的提高了软件开发的效率。
make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见,makefile都成为了一种在工程方面的编译方法。
make是一条命令,makefile是一个文件,两个搭配使用,完成项目自动化构建。

二、依赖关系和依赖方法

在使用make/makefile自动化构建工具时,会存在两个“依赖”,依赖关系和依赖方法。什么是依赖关系和依赖方法呢?比如说现在到月底了,你要问你爸要生活费了,你打通电话,跟你爸说了一句,“爸,我是你儿子,我没有生活费了,你给我寄点生钱”,然后你就挂了电话,你说的这一句“爸,我是你儿子”就是表明你跟你爸之间的依赖关系,“你给我寄钱”就是依赖方法,正因为你是你爸的儿子,即你和你把有依赖关系,你爸才会给你钱,即依赖方法;如果没有依赖关系,那么就没办法产生依赖方法。你不可能问你舍友的爸要钱,因为你们没有依赖关系,不能产生依赖方法。回到代码上,依赖关系就是某一个文件的生成需要依赖另外一个或者多个文件为基础,这就是这些文件之间的依赖关系,依赖方法就是生成目标文件的方法,即如何编译才能生成目标文件。

三、make/makefile如何书写?

首先需要在当前目录下创建一个makefile/Makefile文件,按照编译代码的整个过程编译就是分为:预处理,编译,汇编,链接形成可执行文件。
Linux项目自动化构建工具-make/Makefile以及git三板斧,Linux系统编程,linux,自动化,git,服务器,运维

Linux项目自动化构建工具-make/Makefile以及git三板斧,Linux系统编程,linux,自动化,git,服务器,运维
但是像上面那样写就写得太复杂了,我们一般都是直接一步到位生成可执行文件的。
Linux项目自动化构建工具-make/Makefile以及git三板斧,Linux系统编程,linux,自动化,git,服务器,运维
因为一个文件的生成可能需要依赖多个文件,当依赖的文件很多的时候,我们写起来也很不方便,所以又产生了一种特殊符号的形式。
$@代表的是依赖关系中冒号的左边, $^代表的是依赖关系中冒号的右边。写法如下:
Linux项目自动化构建工具-make/Makefile以及git三板斧,Linux系统编程,linux,自动化,git,服务器,运维

四、文件的三个时间(Access、Modify、Change)

细心的朋友肯定发现了以下问题:
Linux项目自动化构建工具-make/Makefile以及git三板斧,Linux系统编程,linux,自动化,git,服务器,运维
可以看到,当我们写好代码之后,第一次make的时候是正常编译,但是如果在没有修改过代码的情况下再make一次,编译器就不让我们编译了,这是什么原因呢?
那我们就要来了解了解Access、Modify和Change三个时间了。
Linux项目自动化构建工具-make/Makefile以及git三板斧,Linux系统编程,linux,自动化,git,服务器,运维
如果想要手动更新这三个时间,可以使用touch命令,touch+文件名的作用是,如果该文件不存在就是创建该文件,如果该文件已经存在了,则会更新三个时间。
Linux项目自动化构建工具-make/Makefile以及git三板斧,Linux系统编程,linux,自动化,git,服务器,运维

五、Linux下倒计时和进度条代码的书写

5.1 回车换行

我们都听到回车换行是一起讲的,你是否觉得回车换行是一个词呢?其实不是的,回车换行是两个独立的词语,回车是回车,换行是换行,他们两没有半毛钱关系;回车的意思是回到本行的最开始的位置,换行是切换到下一行。在Linux下\r代表回车,\n其实是既有回车又有换行的。

5.2 缓冲区

Linux项目自动化构建工具-make/Makefile以及git三板斧,Linux系统编程,linux,自动化,git,服务器,运维
观察上述图片你会发现,main函数的代码明明是先打印hello world!!!,再sleep两秒钟的,但是根据图片所示,却是先sleep两秒钟,再打印出了hello world!!!的,这是什么原因呢?难道代码还能从下往上执行?当然不是,不可能是先执行下面的代码,再执行上面的代码的,所以打印函数肯定先执行了,但是却没有看见打印内容到显示屏,说明打印的代码肯定在某个位置上存着,等到sleep后再在显示屏上刷新出来,那么打印在了哪里呢?其实是在缓冲区里。
缓冲区是C语言维护的一段内存,可以用来暂时存放打印的内容,等到缓冲区满了或者程序结束后会再刷新到显示屏上去,为什么要有缓冲区临时存储呢?直接打印到显示器上不就好了吗?缓冲区当然有它的意义,因为显示器是计算机的外部设备,访问速度慢,频繁地向显示器打印内容不利于操作系统整机效率的提高,会降低操作系统的效率,缓冲区的存在能大大地减少访问外设的频率。
那么我们如何能够立即把内容刷新到显示器上呢?可以用fflush接口函数实时地把缓冲区上的内容刷新到显示器上。
Linux项目自动化构建工具-make/Makefile以及git三板斧,Linux系统编程,linux,自动化,git,服务器,运维

如上图所示,打印后用fflush接口刷新stdout(标准输出:显示器)
就能先看到打印的结果再sleep了。

5.3 倒计时代码实现

Linux项目自动化构建工具-make/Makefile以及git三板斧,Linux系统编程,linux,自动化,git,服务器,运维
Linux项目自动化构建工具-make/Makefile以及git三板斧,Linux系统编程,linux,自动化,git,服务器,运维

5.4 进度条代码实现

makefile
Linux项目自动化构建工具-make/Makefile以及git三板斧,Linux系统编程,linux,自动化,git,服务器,运维
processBar.h
Linux项目自动化构建工具-make/Makefile以及git三板斧,Linux系统编程,linux,自动化,git,服务器,运维
processBar.c
Linux项目自动化构建工具-make/Makefile以及git三板斧,Linux系统编程,linux,自动化,git,服务器,运维

test.c

Linux项目自动化构建工具-make/Makefile以及git三板斧,Linux系统编程,linux,自动化,git,服务器,运维

运行结果:
Linux项目自动化构建工具-make/Makefile以及git三板斧,Linux系统编程,linux,自动化,git,服务器,运维

六、git三板斧

6.1 什么是git?

git是具有网络功能的版本控制器,是一款开源的软件。不知道你有没有过这样的经历,比如说你写实验报告,写好了第一版本的实验报告,提交的时候被老师骂了一顿,说到处都是问题,让你拿回来重新修改;然后你拿回来修改了一遍,得到了第二版本的实验报告;提交后老师说改正了一些问题,但是另外的问题又暴露出来了,让你拿回去再修改;你修改了一遍,得到了第三版本的实验报告;上交的时候,老师说你怎么越改越差了,再拿回去修改,你又改了一遍,拿给老师,老师板着脸骂了你一顿,然后说,算了,你的第二版本的实验报告写得还稍微好一点,你把你的第二个版本的实验报告交给我吧!这时回到宿舍的你看着第四版本的实验报告,根本想不起来第二个版本是什么样的了,因为你又没有实现做好备份,所以你根本没办法恢复出第二版本的实验报告交给老师。从这个例子就可以看出,当我们在修改的时候,有可能需要对比不同版本时,最好是先做好每一次改动的痕迹,一遍找到旧的版本。而git就是用来干这个版本控制的活的。常见的版本控制器还有svn等。
git既可以做服务端,又可以做客户端;客户端就是我们在我们自己的电脑上下载了git这个软件,然后在本地创建了一个目录来做版本控制管理,这个目录就叫做本地仓库。由于本地的东西会出现丢失的情况,一旦丢失,那么就找不到了,所以git有一个内存非常大的云服务器做服务器端,服务端也能够做版本控制管理的,即你可以把你的本地仓库的内容推送给远端仓库,自此,你就不怕因你的本地仓库的内容丢失而找不到你想要的版本了。这就是git的核心功能。

6.2 商业化版本的git网站

很多的互联网公司就基于git做了一些商业化的网站,例如:gitee、github等等。就好比互联网公司基于Linux内核做了一些商业化的操作系统(OS)一样,例如:Centos,乌班图等等。

6.3 git多人协作

git除了可以做版本控制,还可以完成多人协作。假如在公司里做项目的时候,一般都是多人一起协作完成的,所以一个人写的代码,队友们也是需要用的,我们可以通过上传到git上,然后在各自的电脑上拉去下来就可以做到多人协作完成工作了。

6.3 git clone

git clone是把远端仓库克隆到本地,使本地仓库和远端仓库建立联系。
Linux项目自动化构建工具-make/Makefile以及git三板斧,Linux系统编程,linux,自动化,git,服务器,运维
Linux项目自动化构建工具-make/Makefile以及git三板斧,Linux系统编程,linux,自动化,git,服务器,运维
执行完之后远端的仓库就被clone到了本地:
Linux项目自动化构建工具-make/Makefile以及git三板斧,Linux系统编程,linux,自动化,git,服务器,运维

完成了clone之后,进入linux目录,就会有一个.git的隐藏目录文件,这个.git文件就是云服务器的本地仓库。在gitee远端也有一个一模一样的.git,本地仓库如下图:
Linux项目自动化构建工具-make/Makefile以及git三板斧,Linux系统编程,linux,自动化,git,服务器,运维
远端仓库和本地仓库建立好联系之后就可以通过git三板斧向仓库里推送代码了。

6.4 git三板斧之 – git add

git add + 文件名
该命令是将你的文件添加到暂存区里,具体操作为:
Linux项目自动化构建工具-make/Makefile以及git三板斧,Linux系统编程,linux,自动化,git,服务器,运维

6.5 git三板斧之 – git commit

git commit -m “日志信息”
注意:-m选项必须要有,即日志信息一定要有的,如果不带-m是无法提交到本地仓库的。

该命令是真正地将文件提交到本地仓库里,具体操作为:
Linux项目自动化构建工具-make/Makefile以及git三板斧,Linux系统编程,linux,自动化,git,服务器,运维

6.6 git 三板斧之 – git push

git push
是把本地仓库的代码推送到远端仓库。
具体操作为:
Linux项目自动化构建工具-make/Makefile以及git三板斧,Linux系统编程,linux,自动化,git,服务器,运维
完成了git push之后在gitee上就能看到我们推送过去的代码了,如下图:包括日志信息等。
Linux项目自动化构建工具-make/Makefile以及git三板斧,Linux系统编程,linux,自动化,git,服务器,运维
git首次使用需要配置用户名和邮箱。
Linux项目自动化构建工具-make/Makefile以及git三板斧,Linux系统编程,linux,自动化,git,服务器,运维

以上就是今天想要跟大家分享的内容啦,你学会了吗?如果这篇文章对你有所帮助,那么点点小心心,点点关注呗,后期还会持续更新Linux相关的知识哦,我们下期见啦!!!!!文章来源地址https://www.toymoban.com/news/detail-574330.html

到了这里,关于Linux项目自动化构建工具-make/Makefile以及git三板斧的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Linux】Linux项目自动化构建工具-make/makefile

    🎉博客主页:小智_x0___0x_ 🎉欢迎关注:👍点赞🙌收藏✍️留言 🎉系列专栏:Linux入门到精通 🎉代码仓库:小智的代码仓库 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需

    2024年02月12日
    浏览(63)
  • 【Linux】项目自动化构建工具——make/Makefile及拓展

    1、背景知识 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作 makefile带来的好处就是——“自动化编译”,一旦

    2023年04月27日
    浏览(48)
  • 【Linux】Linux下的项目自动化构建工具——make和makefile

            大家好,好久不见!今天小狮子为大家带来的文章是一篇关于Linux下的项目自动化构建工具——make和makefile的博客,希望能帮助到大家。         当我们进行涉及多文件的工程开发时,我们需要对很多不同类型、不同功能,存在于不同目录下的源文件进行编译操作,

    2024年02月13日
    浏览(49)
  • Linux工具【2】(调试器gdb、项目自动化构建工具make/Makefile)

    在上一篇文章中介绍了Linux中的编辑器vim与编译器gcc与g++: 戳我看vim与gcc详解哦 在本篇文章中将继续来介绍Linux中的工具: 调试器gdb与项目自动化构建工具make/Makefile 在Windows环境中,我们使用vs时,常常会逐过程与逐语句地调试代码以更高效地寻找到错误的位置。在Linux中也

    2024年02月12日
    浏览(51)
  • Linux项目自动化构建工具-make/Makefile以及git三板斧

    是否会写make/makefile,从侧面反映了一个程序员是否具备完成大型工程的能力。一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更

    2024年02月16日
    浏览(47)
  • 【Linux】Linux编译器-gcc/g++ && Linux项目自动化构建工具-make/Makefile

    目录 Linux编译器-gcc/g++使用 1.背景知识  Linux中头文件的目录在 Linux 库 条件编译的典型应用 2.gcc如何完成 动态库 vs 静态库 debug release Linux项目自动化构建工具-make/Makefile 背景 用法 特殊符号  预处理(去注释,头文件展开,条件编译,宏替换) 编译(生成汇编) 汇编(生成

    2024年02月20日
    浏览(49)
  • 【Linux】项目自动化构建工具-make和Makefile 的使用和进度条的实现

    什么是makefile 在我们以后的工作环境中,一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作 Linux中提供了自动化

    2024年02月07日
    浏览(67)
  • 【Linux】:Linux项目自动化构建工具——make/Makefile || Linux第一个小程序——进度条(简单版本)

    在本章开始给大家分享一个图片 希望对你有帮助 在这里插入图片描述 在开始本章之前 我们需要回顾一下上节课的函数的动静态库的优缺点 动态库的优点: 比较节省资源(这里说的资源不仅仅是磁盘资源 也包括网络资源 内存资源等等),不会出现太多的重复代码 缺点:对

    2024年02月05日
    浏览(43)
  • 【探索Linux】—— 强大的命令行工具 P.6(调试器-gdb、项目自动化构建工具-make/Makefile)

    前面我们讲了C语言的基础知识,也了解了一些数据结构,并且讲了有关C++的一些知识,也学习了一些Linux的基本操作,也了解并学习了有关Linux开发工具vim 、gcc/g++ 使用、yum工具以及git 命令行提交代码也相信大家都掌握的不错,今天博主带大家了解一下 —— Linux系统下的调试

    2024年02月12日
    浏览(38)
  • 【Linux】--- Linux编译器-gcc/g++、调试器-gdb、项目自动化构建工具-make/Makefile 使用

    格式: gcc [选项] 要编译的文件 [选项] [目标文件] , gcc / g++ 安装: sudo yum install -y gcc-c++ 。安装后的编译器默认的版本是较低的,我们可以 使用选项 -std=c99 (即使用c99标准), -std=c++11 (即使用c++11的标准)来进行版本提升 。使用 -o 选项,可以将编译生成的可执行重命名

    2024年03月10日
    浏览(103)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包