【学习笔记之Linux】工具之make/Makefile与git

简介: 【学习笔记之Linux】工具之make/Makefile与git

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文件,之后会贴源码。

db7a79e984c64f9dbb38af0a445cdd98.png

//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命令无法生成它的依赖关系和决定他是否要执行,需要我们显示地指明这个目标才能让其生效。伪目标取名不能和文件名重名,不然失去意义了。

d2bb73c09d2b4e4c9b671067a93d9a4d.png

git:


在Linux中,git需要自己进行下载,yum install git,就可以安装git了,如果是普通用户需要sudo提权,或者换到root用户安装。

 先建好远端仓库,然后克隆就行了,git clone url(对应仓库的链接)。

 然后就是git三板斧,最常用的添加、提交、推送。添加:git add 添加内容,将修改内容添加到缓存区;提交git commit -m “对提交内容进行描述”,把修改内容提交到本地仓库;推送:git push,把已经提交到本地仓库的内容推送到远端仓库。

 没有进行过全局配置,每次推送都会需要输入邮箱和密码。

8a6ce4812b2745d39b8f147daad87fcc.png

目录
相关文章
|
3月前
|
Shell Linux
Linux shell编程学习笔记30:打造彩色的选项菜单
Linux shell编程学习笔记30:打造彩色的选项菜单
|
24天前
|
Linux 网络安全 开发工具
Git学习笔记(一):基础与应用
本文档详细介绍了如何将本地项目关联到Gitee上的空仓库并上传代码,以及如何验证本机与Git服务器的SSH连接。同时,还概述了Git的基本概念、安装步骤、初始配置、常见命令及如何配置多个SSH-Key,适用于初学者快速上手Git操作。
104 51
Git学习笔记(一):基础与应用
|
2月前
|
并行计算 Ubuntu Linux
Ubuntu学习笔记(三):Linux下操作指令大全
Ubuntu学习笔记,介绍了Linux操作系统中常用的命令和操作,如文件管理、系统信息查看、软件安装等。
47 3
|
2月前
|
Linux C++
Linux c/c++之makefile的基础使用
Linux下C/C++项目中makefile的基本使用,包括基础、进阶和高级用法,以及如何创建和使用makefile来自动化编译过程。
19 0
Linux c/c++之makefile的基础使用
|
3月前
|
Shell Linux
Linux shell编程学习笔记82:w命令——一览无余
Linux shell编程学习笔记82:w命令——一览无余
|
4月前
|
安全 Linux 开发工具
Git学习笔记
这篇文章是一份Git学习笔记,涵盖了Git的基本命令、工作流程、项目搭建、文件状态管理,以及如何使用码云和IDEA进行版本控制操作。
Git学习笔记
|
4月前
|
存储 Linux 开发工具
【Azure App Service】本地Git部署Python Flask应用上云(Azure App Service For Linux)关键错误
【Azure App Service】本地Git部署Python Flask应用上云(Azure App Service For Linux)关键错误
|
4月前
|
存储 运维 Shell
运维.Linux.bash学习笔记.数组及其使用
运维.Linux.bash学习笔记.数组及其使用
36 0
|
5月前
|
存储 安全 开发工具
Git学习笔记 三个区域、文件状态、分支、常用命令
理解并掌握这些概念和命令,对于有效地使用Git来管理项目源代码是至关重要的。Git的强大功能支持了复杂的开发工作流程,而良好的Git实践能够极大地提高团队的协作效率。随着实践的增多,对于Git更深层次的功能和最佳实践的理解也会随之增长,进一步加强你作为一个软件开发者的能力。
74 0
|
5月前
|
Java Linux C++
【Linux】Make和Makefile快速入门
【Linux】Make和Makefile快速入门
34 0