单个makefile构建单目录的工程
使用单个makefile构建单目录的工程适用于一些简单的测试场景
目录树如下
➜ test_pro tree -h
.
└── [4.0K] test_pro1
├── [ 800] Makefile
├── [ 287] hello1.c
└── [ 223] hello1.h
1 directory, 3 files
makefile的源文件如下
SRC = $(wildcard *.c) # 获取当前目录下的所有.c文件
OBJ := $(patsubst %.c, %.o, $(SRC)) # 将所有的.c文件换成.o文件
# OBJ = $(SRC:.cc=.o)
EXEC = hello1.bin
DFLAGS ?= # 库的链接参数
CFLAGS ?= # 参数信息
CROSS_COMPILE ?= # 没有定义交叉编译器时,直接用gcc
CC := $(CROSS_COMPILE)gcc # 编译器 按需就行
AR = ${CROSS_COMPILE}ar
STRIP = ${CROSS_COMPILE}strip
AS = ${CROSS_COMPILE}as
LD = ${CROSS_COMPILE}lr
RANLIB = ${CROSS_COMPILE}ranlib
NM = ${CROSS_COMPILE}nm
.PHONY : clean all
all: $(EXEC)
$(EXEC): $(OBJ)
$(CC) $(OBJ) -o $@ $(CFLAGS) $(DFLAGS)
%.o: %.c
$(CC) -c $< -o $@ $(CFLAGS) $(DFLAGS)
clean:
rm -rf $(OBJ) $(EXEC)#
测试
➜ test_pro1 make clean all
rm -rf hello1.o hello1.bin
gcc -c hello1.c -o hello1.o
gcc hello1.o -o hello1.bin
➜ test_pro1 ./hello1.bin
hello 1 in
➜ test_pro1