单个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 
posted @ 2023-01-04 10:57  tccxy  阅读(40)  评论(0编辑  收藏  举报