#把所有的目录做成变量,方便修改和移植
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)
通用性Makefile文件
最新推荐文章于 2022-02-16 17:09:41 发布