史上最容易懂的makefile简单教程

1.makefile学习资料:

概述 — 跟我一起写Makefile 1.0 文档

makefile参考手册.pdf

2.小试一下:

新建tool1.h.tool1.c tool2.h tool2.c, main.c代码如下

#ifndef TOOL2_H_
#define TOOL2_H_

int mul(int a, int b);

#endif
#include 
#include "tool2.h"

int mul(int a, int b)
{
     return a*b;
}
#ifndef TOOL1_H_
#define TOOL1_H_

int add(int a, int b);

#endif
#include 
#include "tool1.h"

int add(int a, int b)
{
     return a+b;
}
#include 
#include "tool1.h"
#include "tool2.h"

int main()
{
    int data1,data2;
    data1 = add(1,2);
    data2 = mul(2,4);
    printf("data1 %d, data2 %d, \n", data1, data2);
   
    return 0;
}

编写makefile

mytool: main.o tool1.o tool2.o
    gcc main.o tool1.o tool2.o -o mytool

main.o:main.c
    gcc main.c -c -Wall -g -o main.o
tool1.o:tool1.c
    gcc tool1.c -c -Wall -g -o tool1.o
tool2.o:tool2.c
    gcc tool2.c -c -Wall -g -o tool2.o

clean:
    rm *.o mytool -rf

改进版makefile

OBJS=main.o tool1.o tool2.o
CC=gcc
CFLAGS+=-c -Wall -g

mytool: $(OBJS)
    $(CC) $(OBJS) -o mytool

main.o:main.c
    $(CC) main.c CFLAGS -o main.o
tool1.o:tool1.c
    $(CC) tool1.c CFLAGS -o tool1.o
tool2.o:tool2.c
    $(CC) tool2.c CFLAGS -o tool2.o

clean:
    $(RF) *.o mytool -r

改进版maefile

OBJS=main.o tool1.o tool2.o
CC=gcc
CFLAGS+=-c -Wall -g

mytool: $(OBJS)
    $(CC) $^ -o $@

main.o:main.c
    $(CC) $^ CFLAGS -o $@
tool1.o:tool1.c
    $(CC) $^ CFLAGS -o $@
tool2.o:tool2.c
    $(CC) $^ CFLAGS -o $@

clean:
    $(RF) *.o mytool -r

最终版makefile

OBJS=main.o tool1.o tool2.o
CC=gcc
CFLAGS+=-c -Wall -g

mytool: $(OBJS)
    $(CC) $^ -o $@

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

clean:
    $(RF) *.o mytool -r

%同一句话中代表相同的名字,¥^语句依赖, ¥@语句目标,变量的使用$(变量名)

你可能感兴趣的:(Linux,C/C++,makefile)