1.首先准备所需的target和files:
按照makefile的基本格式,如下图所示.
图片来源:Makefiles in Linux: An Overview
target为calculate。
files为main.c,add.c , divide.c , minus, multiply.c ,math.c ,代码分别如下:
main.c代码如下:
#include<stdio.h>
#include<math.h>
int main(void)
{
int sum = 0;
sum = add(4,3);
printf("x+y sum: %d\n",sum);
int result = 0;
result = divide(4,0);
printf("result: %d\n",result);
return 0;
}
add.c代码如下:
#include<math.h>
int add(int x, int y)
{
return(x+y);
}
divide.c代码如下:
#include<math.h>
int divide(int x, int y)
{
if(y == 0)
{
printf("y can't be zero\n");
return 0;
}
return(x/y);
}
#include<math.h>
int minus(int x, int y)
{
return(x/y);
}
multiply.c代码如下:
#include<math.h>
int multiply(int x, int y)
{
return(x*y);
}
头文件math.h代码如下:
int add(int x, int y);
int minus(int x, int y);
int divide(int x, int y);
int multiply(int x. int y);
objects=main.o add.o divide.o minus.o multiply.o
calculate: $(objects)
gcc $(objects) -o calculate
$(objects):%.o: %.c math.h
gcc -c $< -o $@
clean:
rm calculate *.o
makefile版本2(用了变量和$<、$@,详见我的博客中Makefile详解,太详细,你需要选择着看):
objects=main.o add.o divide.o minus.o multiply.o
calculate: $(objects)
gcc $(objects) -o calculate
$(objects):%.o: %.c math.h
gcc -c $< -o $@
clean:
rm calculate *.o
在Ubuntu上测试结果如下:
PS:不对的地方,欢迎指正!