make/Makefile:
背景知识:
一个工程中的源文件不计数,按类型、功能、模块分别放在若干个目录中,Makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,那些文件需要重新编译等,可以说Makefile关系到了整个工程的编译规则,因此会不会写Makefile,能不能写好Makefile,说明了一个程序员完成大型工程的能力。
Makefile带个程序员的好处就是自动化编译,只要写好Makefile,整个项目工程就能够完全自动编译,大大提高软件的开发效率。
Makefile介绍:
make是一个命令,Makefile是一个文件,两者搭配使用,就能实现项目自动化构建。通过touch先创建一个名为Makefile的文件,然后在Makefile文件中编写内容,编写完成后就可以在对应的目录下执行make命令。make会自动在目录下查找Makefile文件。
Makefile更像是一个脚本语言,它的语法与编程语言是有区别的。Makefile实际上是一个很大的很深的技术点,这篇文章只是简单的介绍一下,如果想要深入学习可以看陈皓大佬的文章。刚学的话没必要马上就专研的很深。
Makefile规则:
Makefile主要的规则是依赖关系和依赖方法。
target ...:prerequisites ... command ... ...
target是目标文件,执行make命令生成的文件名就是target文件的名字;
prerequisites是生成target文件所需要的文件或者目标,他们之间是依赖关系,target依赖prerequisites生成,一个目标文件可以依赖多个文件生成;
command是make需要执行的命令,可以是任何的shell命令,这就是与之对应的依赖方法。
实例:
这里我已经写好Makefile文件和对应的C文件,之后会贴源码。
//main.c文件 #include "proc.h" int main() { process(); return 0; }
//proc.c文件 #include "proc.h" #define SIZE 52 #define STYLE '=' #define ARR '>' void process() { const char *lable = "|/-\\"; char bar[SIZE]; memset(bar, '\0', sizeof(bar)); int i = 0; while( i <= 50 ) { printf("[%-50s][%d%%][%c]\r", bar, i * 2, lable[i%4]); fflush(stdout); bar[i++] = STYLE; if(i != 50) bar[i] = ARR; usleep(100000); } printf("\n"); }
//proc.h文件 #pragma once #include <stdio.h> #include <string.h> #include <unistd.h> extern void process();
myprocess:main.c proc.c gcc -o myprocess main.c proc.c .PHONY:clean clean: rm -f myprocess
.PHONY表示clean是一个伪目标,为目标不是一个文件,只是一个标签,所以make命令无法生成它的依赖关系和决定他是否要执行,需要我们显示地指明这个目标才能让其生效。伪目标取名不能和文件名重名,不然失去意义了。
git:
在Linux中,git需要自己进行下载,yum install git,就可以安装git了,如果是普通用户需要sudo提权,或者换到root用户安装。
先建好远端仓库,然后克隆就行了,git clone url(对应仓库的链接)。
然后就是git三板斧,最常用的添加、提交、推送。添加:git add 添加内容,将修改内容添加到缓存区;提交git commit -m “对提交内容进行描述”,把修改内容提交到本地仓库;推送:git push,把已经提交到本地仓库的内容推送到远端仓库。
没有进行过全局配置,每次推送都会需要输入邮箱和密码。