Makefile 的试水

来源:互联网 发布:linux mysql安装 编辑:程序博客网 时间:2024/05/17 23:01
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文件串起来来用.
0 0
原创粉丝点击