Universal Makefile

#把所有的目录做成变量,方便修改和移植 
BIN = ./bin
SRC = ./src
INC = ./include
OBJ = ./obj

#提前所有源文件(即:*.c文件)和所有中间文件(即:*.o)
SOURCE = $(wildcard ${SRC}/*.c)
OBJECT = $(patsubst %.c,${OBJ}/%.o,$(notdir ${SOURCE}))

#SRC = $(wildcard *.c)
#等于指定编译当前目录下所有.c文件,如果还有子目录,比如子目录为inc,则再增加一个wildcard函数,象这样:
#SRC = $(wildcard *.c) $(wildcard inc/*.c)


#设置最后目标文件
TARGET = i2c_test #生成的文件名称
BIN_TARGET = ${BIN}/${TARGET}

#if  1  //for Renesas
CROSS_COMPILE =/opt/poky/2.1.2/sysroots/x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux/aarch64-poky-linux-
CC	?= $(CROSS_COMPILE)gcc --sysroot=/opt/poky/2.1.2/sysroots/aarch64-poky-linux
#endif

#if 0 // Old version
CC	?= gcc
#endif

CFLAGS = -g -Wall -I${INC} 

#用所有中间文件生成目的文件,规则中可以用 $^替换掉 ${OBJECT}
${BIN_TARGET}:${OBJECT}
	$(CC) -o $@ ${OBJECT}

#生成各个中间文件
${OBJ}/%.o:${SRC}/%.c 
	$(CC) $(CFLAGS) -o $@ -c $<

.PHONY:clean
clean:
	find $(OBJ) -name *.o -exec rm -rf {} \; #这个是find命令,不懂的可以查下资料
	rm -rf $(BIN_TARGET)

Guess you like

Origin blog.csdn.net/baidu_38410526/article/details/81946462