通用Makefile

     编译当前目录下的多个目标:

ifdef VERBOSE
    VERBOSE=
else
    VERBOSE=@
endif
CROSS_COMPILE = 
LD = $(CROSS_COMPILE)gcc
CC = $(CROSS_COMPILE)gcc
CXX = $(CROSS_COMPILE)g++
CPP     ?= $(CC) -E
AR      ?= $(CROSS_COMPILE)ar
NM      ?= $(CROSS_COMPILE)nm
STRIP       ?= $(CROSS_COMPILE)strip
OBJCOPY     ?= $(CROSS_COMPILE)objcopy
OBJDUMP     ?= $(CROSS_COMPILE)objdump
RM      ?= rm -f
MAKEDIR     ?= mkdir -p



SRCS     = $(wildcard *.c)
OBJS     = $(patsubst %.c, %.o, $(SRCS))
TARGETS  = $(SRCS:%.c=%)
INCLUDE  = -I ./include
LIBS     = -L ./lib
$(info $(OBJS))
$(info $(TARGETS))

all : $(TARGETS)

$(TARGETS): %: %.o
        $(VERBOSE)mkdir -p `dirname $@`
        $(VERBOSE)echo "     Building $@"
	$(VERBOSE)$(CC) $(LIBS) $(LDFLAGS) $(LIBRARY) -o $@ $< -pthread

$(OBJS) : %.o: %.c 
	$(VERBOSE)$(CC) -c $(INCLUDE) $(CFLAGS) -o $@ $< -pthread


clean :
	$(VERBOSE)rm -rf $(TARGETS) $(OBJS) *~

#.SUFFIXES:
.PHONY : all clean

 

多个c文件编译一个目标:

CROSS_COMPILE = arm-none-linux-gnueabi-			#教材编译器
LD = $(CROSS_COMPILE)gcc
CC = $(CROSS_COMPILE)gcc
TARGET = test_app								#目标文件名

SRCS = $(wildcard ./src/*.c)
OBJS := $(SRCS:.c=.o)

INCLUDES =  -I ./inc 							#头文件路径
LIBS = -L ./lib -lpthread 						#库的路径及相关库
CCFLAGS = -g -Wall -O0							#告警及优化等级

all: $(TARGET)

%.o : %.c
	$(CC) -o $@ $(INCLUDES) $(CCFLAGS) -c $<  
$(TARGET) : $(OBJS)
	$(CC) -o $@ $^ $(LIBS)

clean :
	@rm -rf $(TARGETS) $(OBJS) *~

#.SUFFIXES:
.PHONY : all clean

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

听雨听风眠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值