【Linux取经之路】Linux项目自动化构建工具-make/makefile git三板斧
目录
关于make和makefile
一个案例
make和makefile的使用
makefile的基本语法
git的使用
关于make和makefile
make是 Linux 系统中广泛使用的一个自动化构建工具,它根据用户定义的规则(通常保存在一个名为 makefile的文件中)来自动编译和链接程序。make
工具的主要目的是自动化编译过程,减少重复的手动操作,并确保编译过程的一致性和可重复性。make是一个解释makefile中命令的工具。一条命令(make)和一个文件(makefile),搭配使用,完成项目自动化构建。
一个案例
假设我们要执行的文件(main)里包含了3个源代码文件,分别是hello.c、world.c、test.c。为了得到可执行文件main,我们做如下的操作。
hello.c:声明Add函数。
world.c:实现Add函数。
test.c:调用Add函数。
1)得到hello.o、world.o、test.o
2)将hello.o、world.o、test.o编译成main
gcc -c hello.c -o hello.o
gcc -c world.c -o world.o
gcc -c test.c -o test.o
gcc -o main hello.o world.o test.o
编译的过程需要进行好多操作,而且如果需要重新编译呢?上述的流程在整一遍?未免太烦人了吧,如果可以的话,能不能一步就完成上面的所有操作?下面我们正式进入make和makefile。
make和makefile的使用
我们先在当前目录下新建一个makefile文件,文件内容如下:
第二行开头是Table键产生的空格。第一行叫做依赖关系,第二行叫做依赖方法。下面我们来使用makefile指定的规则进行编译操作。
我们在使用make的时候,它会去读取makefile的内容,并根据内容直接去给它编译相关的文件。
如果我们连续make,会怎样呢?
它会提示我们,目前main文件已经是最新了。
现在,我们来总结一下make的好处,接着在谈makefile的基本语法。
make的好处:
● 简化编译时所需要执行的命令。
● 若在编译完成之后,修改了某个源文件的代码,则make仅会针对被修改了的文件进行编译,其他的目标文件不会被修改。
● 可以依照依赖性来更新执行文件。
makefile的基本语法
目标:目标文件1 目标文件2
<Tab> gcc -o 欲建立的执行文件 目标文件1 目标文件2
其中,第1行叫做依赖关系。也就是说,目标执行文件的生成要依赖于目标文件1和目标文件2。第二行,注意:命令行必须以Tab键作为开头。此行叫做依赖方法。也就是指明了目标执行文件是如何依赖目标文件1和目标文件2的。下面总结makefile的基本语法:
● 在makefile中#表示注释。
● 命令行必须以<Tab>键作为开头。
● 目标与目标文件之间需要以 [ : ] 隔开。
下面,我们接着上面的例子,讲一讲如何执行一个命令就可以清掉所有的目标文件和执行文件。
这里,定义了一个clean,它没有依赖关系,只有依赖方法。我们来看看执行clean的效果。
执行clean时,它实际上执行的是它对应的依赖方法,确实把所有的.o文件和目标文件都删除了。但是,makefile中重复的数据是不是有点多了?下面我们借助Shell脚本来简化makefile。
我们来执行看看效果。
这是符合预期的。makefile中的OBJS就是我们定义的一个变量,我们通过这个变量来简化了makefile,下面我们看看变量的基本语法。
● 变量与变量内容用=隔开,同时两边可以具有空格。
● 在习惯上,变量最好以大写字母为主。
● 运用变量时,以$(变量)或${变量}使用。
介绍一个特殊变量:$@,代表当前的目标(例如上面的main)。利用这点,我们再来把makefile简化一下。
git的使用
CentOS下,安装指令:sudo yum install -y git。
Ubuntu下,安装指令:sudo apt install -y git。
下载Gitee上的项目到本地
命令:git clone [url]
url表示项目的链接。
下面我以我自己在Gitee上的仓库为例进行实操(当然,你也可以创建一个新的仓库进行测试)。
复制框住的命令到终端执行就可以将此仓库中的所有代码下载到本地了。我的仓库里代码较多而且很杂,请使用自己的仓库进行测试。
执行完该指令后,Gitee上的代码确实下载到了本地。
git的配置
将下面框住的指令复制到终端执行即可。
好了,如何下载Gitee上的项目已经讲解完毕,下面进入git的三板斧,以test.c文件为例。
三板斧第一招:git add
1)将test.c移到pchlany中。
2)git add test.c
此时,只是把test.c添加到了git的暂存区中。
介绍一个命令:git status —— 显示当前工作目录和暂存区的状态。
三板斧第二招:git commit
三板斧第三招:git push
下面,我们到Gitee仓库里看看,有没有提交成功。
可以看到,确实提交成功了。
本文到这就结束啦~感谢您的支持!