【liunx】项目自动化构建工具-make/Makefile

文章目录

  • 前言
  • 一、Makefile构成
  • 二、多文件构建makefile
    • 1.创建main.c
    • 2.添加proces.c
    • 3.添加proces.h
    • 4.添加makefile文件
    • 5.使用make/make clean命令


前言

1、会不会写Makefile,从一个侧面说明了一个人是否具备完成大型工程的能力
2、一个工程文件不计其数,按照类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,那些文件需要重新编译,甚至于进行更复杂的功能操作
3、makefile带来的好处就是-“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率
4、make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令
5、make是一条命令,makefile是一个文件,俩个搭配使用,完成项目自动化构建

一、Makefile构成

(1)make是一条命令,可以自动构建化项目,makefile是一个文件,而makefile文件里面包含了目标文件与原始文件的依赖关系。平常我们写一个C语言代码,编译程序运行程序按照下面步骤:

[YP@VM-4-8-centos test2_18]$ cat proces.c
#include 

int main()
{

  printf("hello word\n");
  return 0;

}
[YP@VM-4-8-centos test2_18]$ gcc proces.c -o proces
[YP@VM-4-8-centos test2_18]$ ls
proces  proces.c
[YP@VM-4-8-centos test2_18]$ ./proces
hello word

可以看出通过一条gcc proces.c -o proces命令可以生成proces编译好的文件,proces文件依赖于原始文件proces.c文件,它们通过gcc -o的方法来将原始文件编译完成。
(2)通过以上,可以写出makefile的第一条命令

 1 proces:proces.c
  2   gcc proces.c -o proces  

命令的第一行代表的是依赖关系,第二行代表的是依赖方法
(3)makefile的第二条命令,清除生成的目标文件

  1 proces:proces.c
  2   gcc proces.c -o proces
  3 .PHONY:clean
  4 clean:                                                                                                                   
  5   rm proces -f

.PHONY:的意思是定义一个伪目标,后跟命令总是可执行的,也就是make clean总是可执行的
(4)使用
通过以下命令就能简单的使用make/makefile命令

[YP@VM-4-8-centos test2_18]$ ls
makefile  proces.c
[YP@VM-4-8-centos test2_18]$ make
gcc proces.c -o proces
[YP@VM-4-8-centos test2_18]$ ls
makefile  proces  proces.c
[YP@VM-4-8-centos test2_18]$ ./proces
hello word
[YP@VM-4-8-centos test2_18]$ make clean
rm proces -f
[YP@VM-4-8-centos test2_18]$ ls
makefile  proces.c
[YP@VM-4-8-centos test2_18]$ 

二、多文件构建makefile

1.创建main.c

1 #include "proces.h"
  2 
  3 int main()
  4 {
  5   int a = 5;
  6   int b = 3;
  7   printf("a + b = %d\n",sum(a,b));                                                                                       
  8   return 0;
  9 }

2.添加proces.c

1 #include "proces.h"
  2 
  3 int main()
  4 {
  5   int a = 5;
  6   int b = 3;
  7   printf("a + b = %d\n",sum(a,b));                                                                                       
  8   return 0;
  9 }

3.添加proces.h

 1 #pragma once
  2 #include <stdio.h>
  3 
  4 int sum(int x, int y);   

4.添加makefile文件

可 以 代 表 原 始 文 件 , ^可以代表原始文件, @可以代表目标文件

  1 proces:proces.c main.c
  2   gcc $^ -o $@
  3 .PHONY:clean
  4 clean:
  5   rm proces -f 

5.使用make/make clean命令

[YP@VM-4-8-centos test2_18]$ ls
main.c  makefile  proces.c  proces.h
[YP@VM-4-8-centos test2_18]$ make
gcc proces.c main.c -o proces
[YP@VM-4-8-centos test2_18]$ ls
main.c  makefile  proces  proces.c  proces.h
[YP@VM-4-8-centos test2_18]$ ./proces
a + b = 8
[YP@VM-4-8-centos test2_18]$ make clean
rm proces -f
[YP@VM-4-8-centos test2_18]$ ls
main.c  makefile  proces.c  proces.h
[YP@VM-4-8-centos test2_18]$ 

你可能感兴趣的:(笔记,自动化,运维,linux)