您的位置:首页 > 其它

makefile 标准模板

2016-04-27 18:52 316 查看
SHELL = /bin/sh

CC = gcc

AR = ar

RANLIB = ranlib

SRCDIR = ./

ARFLAGS = crs

CFLAGS += -D _DEBUG

CFLAGS += -g

#INCLUDES += ./

OUTDIR := out

BIN := $(OUTDIR)/hello

STATICLIB = $(OUTDIR)/libhello.a

SHAREDLIB = $(OUTDIR)/libhello.so

SRCS = $(wildcard *.c)

SUBDIRS += ./tmp

#OBJS = $(SRCS:.c=.o)

SRCS += $(foreach subdir,$(SUBDIRS),$(wildcard $(subdir)/*.c))

OBJS = $(patsubst %.c,%.o,$(foreach subfile,$(SRCS),$(notdir $(subfile))))

objs = $(SRCS:.c=.o)

OUT_OBJS = $(addprefix $(OUTDIR)/,$(OBJS))

VPATH = ./tmp

.PHONY: all clean help staticlib

all: objdir $(BIN)

# build static lib

staticlib: objdir $(objs) $(STATICLIB)

$(STATICLIB):$(OBJS)

$(AR) $(ARFLAGS) $@ $(addprefix $(OUTDIR)/,$^)

#build shared lib

sharedlib: objdir $(OUTDIR)/$(objs) $(SHAREDLIB)

$(SHAREDLIB):$(OBJS)

gcc -shared -o $@ $(addprefix $(OUTDIR)/,$^)

$(BIN):$(OBJS)

gcc -o $@ $(addprefix $(OUTDIR)/,$^)

%.o:%.c

gcc $(CFLAGS) $(INCLUDES) -c $< -o $@

@mv $@ $(OUTDIR)/

objdir:

mkdir -p $(OUTDIR)

@echo $(OUT_OBJS)

help:

@echo ""

@echo "make all"

@echo "make clean"

@echo "make staticlib"

@echo "make sharedlib"

@echo ""

clean:

-rm -rf *.o *.a *.so $(BIN) $(OUTDIR)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: