makefile的编写:由浅入深

文章目录

    • 准备文件
    • Makefile版本一
    • Makefile版本二
    • Makefile版本三
    • Makefile版本四
    • Makefile版本五

准备文件

// fun1.c
#include 
void fun1()
{
    printf("this is fun1\n");	

}
// fun2.c
#include 
void fun2()
{
    printf("this is fun2\n");	
}
//head.h
void fun1();
void fun2();
int sum(int len);
//sum.c
#include 

int sum(int len)
{
	int i = 0;
	int sum = 0;
	for(i=0; i<len; i++)
	{
		sum += i;
	}

	return sum;
}
//main.c
#include 
#include 
#include 
#include 
#include 
#include "head.h"

int main(int argc, char *argv[])
{
    printf("this is main!\n");
	int i = 0;
	for(i=0; i<argc; i++)
	{
		printf("[%d]:[%s]\n", i, argv[i]);
	}

    fun1();
    fun2();

	printf("sum(10)==[%d]\n", sum(10));

    return 0;
}

Makefile版本一

makefile的编写:由浅入深_第1张图片

main: main.c fun1.c fun2.c sum.c
	gcc -o main main.c fun1.c fun2.c sum.c

Makefile版本二

makefile的编写:由浅入深_第2张图片
makefile的编写:由浅入深_第3张图片

main:main.o fun1.o fun2.o sum.o
	gcc -o main  main.o fun1.o fun2.o sum.o

main.o: main.c
	gcc -c main.c -I./

fun1.o: fun1.c
	gcc -c fun1.c
	
fun2.o: fun2.c
	gcc -c fun2.c

sum.o: sum.c
	gcc -c sum.c

Makefile版本三

makefile的编写:由浅入深_第4张图片makefile的编写:由浅入深_第5张图片

makefile的编写:由浅入深_第6张图片
makefile的编写:由浅入深_第7张图片

target = main
objects = main.o fun1.o fun2.o sum.o
CC = gcc
CPPFLAGS = -I./

#这里的$(objects)不能替换成$^,因为此处是条件,不是命令
$(target): $(objects) 
	$(CC) -o $@ $^

%.o: %.c
	$(CC) -c $< $(CPPFLAGS)

###########################################

#main.o: main.c
#	$(CC) -c $< $(CPPFLAGS)

#fun1.o: fun1.c
#	$(CC) -c $<
	
#fun2.o: fun2.c
#	$(CC) -c $<

#sum.o: sum.c
#	$(CC) -c $<

Makefile版本四

makefile的编写:由浅入深_第8张图片

target = main

src = $(wildcard *.c)
objects = $(patsubst %.c, %.o, $(src))
#objects = main.o fun1.o fun2.o sum.o

CC = gcc
CPPFLAGS = -I./

#这里的$(objects)不能替换成$^,因为此处是条件,不是命令
$(target): $(objects) 
	$(CC) -o $@ $^

%.o: %.c
	$(CC) -c $< $(CPPFLAGS)

###########################################

#main.o: main.c
#	$(CC) -c $< $(CPPFLAGS)

#fun1.o: fun1.c
#	$(CC) -c $<
	
#fun2.o: fun2.c
#	$(CC) -c $<

#sum.o: sum.c
#	$(CC) -c $<

Makefile版本五

makefile的编写:由浅入深_第9张图片

target = main
src = $(wildcard *.c)
objects = $(patsubst %.c, %.o, $(src))
CC = gcc
CPPFLAGS = -I./

$(target): $(objects) 
	$(CC) -o $@ $^

%.o: %.c
	$(CC) -c $< $(CPPFLAGS)

#clean和前面的命令没有依赖关系
.PHONY: clean
clean:
	rm -f $(objects) $(target)

makefile的编写:由浅入深_第10张图片

你可能感兴趣的:(C/C++专栏,嵌入式,C++,make,makefile,gdb)