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)
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)
相关文章推荐
- Maven依赖排除 禁止依赖传递 取消依赖的方法 去除jar包中的不想要的依赖关系
- 浅谈Solr和ElasticSearch建索引性能优化策略
- BLOB二进制大数据
- POJ 3767 I Wanna Go Home(最短路/Floyd)
- 存储过程详解1
- 文章标题
- APP创意IDEA记录
- cf273C. Primes on Interval【二分】
- PAT-B 1006. 换个格式输出整数
- Css简介
- Java 设计模式- 外观模式
- 为什么在重写equals方法时还必须重写hashcode方法
- MDF结合Learning rate adjust应用
- TimesTen访问Oracle的口令存在哪里(ttCacheUidPwdSet还是OraclePWD)
- linux基础之 创建一个UDP socket
- untiy 3d ShaderLab_第 2 章Unity中Shader(着色器)的形态_2_Unity中Shader的3种形态
- 过来人讲述买房血泪史:什么样的房子不能碰
- 个人博客总结9
- Easy UI 面板
- Java调用浏览器打开网页