shell-Makefile

/*fun.h*/

#include <stdio.h>
extern int max_fun(int x, int y);

 

/*fun.c*/

 

#include "fun.h"

int max_fun(int x, int y)
{
 if( x >= y)
  return x;
 else
  return y;
}

 

/*main.c*/

 

#include "fun.h"

int main()
{
 int a, b;
 printf("Please enter the number a and b\n");
 scanf("%d%d",&a,&b);
 int max=0;
 max=max_fun(a, b);
 printf("The max number is %d\n",max);
 return 0;
}

 

 

一個簡單的C函數

 

gcc main.c fun.c -o main  -Wall

 

 

 

Makefile1 最基本的

main:main.o fun.o
 gcc main.o fun.o -o main
main.o:main.c fun.c
 gcc -c main.c  -o main.o
fun.o:fun.h fun.c
 gcc -c fun.c -o fun.o
clean:
 rm -r main #.o

 

Makefile2 使用變量

 

 

OBJS=main.o fun.o
CC=gcc
CFLAGS=-c
main:$(OBJS)
 $(CC) $(OBJS) -o main
main.o:main.c fun.c
 $(CC) $(CFLAGS) main.c -o main.o
fun.o:fun.c fun.h
 $(CC) $(CFLAGS) fun.c -o  fun.o
clean:
 rm -f main *.o

 

Makefile3 自動變量

 

 

OBJS=main.o fun.o
CC=gcc
CFLAGS=-c
main:$(OBJS)
 $(CC) $^ -o $@
main.o:main.c fun.h
 $(CC) $(CFLAGS) $< -o $@
fun.o:fun.c fun.h
 $(CC)  $(CFLAGS) $< -o $@
clean:
 rm -f main *.o

 

Makefile4 隱式規則

 

OBJS=main.o fun.o
CC=gcc
CFLAGS=-c
main:$(OBJS)
 $(CC) $^ -o $@

clean:
 rm -f main *.o

 

Makefile5  模式規則

 

OBJS=main.o fun.o
CC=gcc
CFLAGS=-c
main:$(OBJS)
 $(CC) $^ -o $@

%.o:%.c
 $(CC) $(CFLAGS) $< -o $@

clean:
 rm -f main  *.o

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章