通常在C语言程序开发中,尤其是大型项目的构建,我们不可能一个文件一个文件去编译,通常会编写Makefile文件使用make命令完成项目的编译构建;
如下:math项目是简单的计算那个数字大,哪个数字小,以及两个数字和的小程序。由max.c,min.c , sum.c 和main.c构成,分别如下:
max.c
#include <stdio.h>
int max(int a,int b)
{
if(a>b){
return a;
}else{
return b;
}
}
min.c
#include <stdio.h>
int min( int a , int b )
{
if( a > b ){
return b;
}else{
return a;
}
}
sum.c
#include <stdio.h>
int sum( int a ,int b )
{
return a + b;
}
main.c
#include <stdio.h>
#include "max.h"
#include "min.h"
#include "sum.h"
int main()
{
int a = 23;
int b = 34;
int maxNum = max(a,b);
int minNum = min(a,b);
int sumNum = sum(a,b);
printf("the max number is :%d\n , the min number is :%d\n , sum is :%d\n",maxNum , minNum , sumNum);
}
其依赖关系为:main.c 依赖 max.c,min.c,sum.c这三个文件
main.c中引入的.h文件为描述文件,比如max.h文件内容为
int max(int a ,int b);
所以要编译该项目,使用make方式需要编写Makefile文件;MakeFile文件如下
# this is a make file math.out:main.o max.o min.o sum.o gcc main.o max.o min.o sum.o -o math.out main.o:main.c gcc -c main.c max.o:max.c gcc -c max.c min.o:min.c gcc -c min.c sum.o:sum.c gcc -c sum.c
Makefile文件编译按照依赖关系自上向下降级编写。例如编译main.c需要依赖其余几个文件,则需要将其与几个文件逐一编译之后,再执行最上面的一句
gcc main.o max.o min.o sum.o -o math.out
需要注意的是:
Makefile文件中 gcc命令必须使用Tab键,不然编译期会报错
原文:http://my.oschina.net/huiger/blog/424533