1.4.5.Makefile大侠隆重登场
1.4.5.1、为什么需要Makefile
Makefile是用来管理工程的。
在一个正式的软件项目中,由很多个.c和.h文件构成,此时如果直接在命令行编译,就会像这样:gcc a.c b.c c.c d.c e.c f.c g.c -o exe 每次编译都要输入一堆东西很麻烦,这个问题严重影响工作效率,怎么办?Makefile来解决
Makefile中的一些基本概念
目标:目标定格写,后面是冒号(冒号后面是依赖)
依赖:依赖是用来产生目标的原材料。
命令:命令前面一定是Tab,不能是定格,也不能说多个空格。命令就是要生成那个目标需要做的动作。
示例:
all:
a.c b.c
all: 是目标
a.c b.c是依赖
gcc a.c b.c -o exe 是命令
gcc a.c b.c -o exe
注意windows系统写好的脚本 移植到 Linux系统中时编译器可能将 Tab键部分解释成4个或者8个空格,这时候会导致在Linux中编译脚本Makefile时会报错。
首先
a.c 文件中
#include<stdio.h>
extern int i ;
void main
{
printf("hello world i = %d\n", i );
}
b.c 文件中的内容
int i = 10;
makefile 文件中的内容
exe: a.c b.c (在a.c之前是存在一个空格的)
gcc a.c b.c - o exe
clean:
rm exe
或者是
makefile 文件中的内容
all: a.c b.c
gcc a.c b.c -o exe
执行步骤如下:
1 执行make 指令得到 exe文件
2 ./exe 执行程序得到输出结果 比如 hello world i =
10
3 使用 vi b.c 修改b.c中的 i 的值为 1000
4 在执行make 指令得到一个新的exe文件(即步骤4中执行make指令后的exe将步骤1 的exe覆盖的),
5然后再运行./exe 得到hello world i =
1000
所以俺个人暂时的理解就是makefile的作用就是将很多个文件家中的.c文件串起来来用.