makefile 单文件夹模版
2016-01-16 15:34
330 查看
.PHONY:all clean
MKDIR = mkdir
RM = rm
RMFLAGS = -rf
CC = gcc
DIR_OBJS = objs
DIR_EXES = exes
DIR_DEPS = deps
DIRS = $(DIR_OBJS) $(DIR_EXES) $(DIR_DEPS)
EXE = exe
EXE := $(addprefix $(DIR_EXES)/,$(EXE))
SRCS = $(wildcard *.c)
OBJS = $(SRCS:.c=.o)
OBJS := $(addprefix $(DIR_OBJS)/,$(OBJS))
DEPS = $(SRCS:.c=.dep)
DEPS := $(addprefix $(DIR_DEPS)/, $(DEPS))
all: $(EXE)
ifneq ($(MAKECMDGOALS),clean)
-include $(DEPS)
endif
$(DIRS):
$(MKDIR) $@
$(EXE):$(DIR_EXES) $(OBJS)
$(CC) -o $@ $(filter %.o,$^)
$(DIR_OBJS)/%.o: $(DIR_OBJS) %.c
$(CC) -o $@ -c $(filter %.c,$^)
$(DIR_DEPS)/%.dep: $(DIR_DEPS) %.c
@echo "making $@..."
@set -e; \
$(RM) $(RMFLAGS) $@.tmp; \
$(CC) -E -MM $(filter %.c,$^) > $@.tmp; \
sed 's,\(.*\)\.o[:]*,objs/\1.o $@:,g' < $@.tmp > $@; \
$(RM) $(RMFLAGS) $@.tmp
clean:
$(RM) $(RMFLAGS) $(DIRS)
MKDIR = mkdir
RM = rm
RMFLAGS = -rf
CC = gcc
DIR_OBJS = objs
DIR_EXES = exes
DIR_DEPS = deps
DIRS = $(DIR_OBJS) $(DIR_EXES) $(DIR_DEPS)
EXE = exe
EXE := $(addprefix $(DIR_EXES)/,$(EXE))
SRCS = $(wildcard *.c)
OBJS = $(SRCS:.c=.o)
OBJS := $(addprefix $(DIR_OBJS)/,$(OBJS))
DEPS = $(SRCS:.c=.dep)
DEPS := $(addprefix $(DIR_DEPS)/, $(DEPS))
all: $(EXE)
ifneq ($(MAKECMDGOALS),clean)
-include $(DEPS)
endif
$(DIRS):
$(MKDIR) $@
$(EXE):$(DIR_EXES) $(OBJS)
$(CC) -o $@ $(filter %.o,$^)
$(DIR_OBJS)/%.o: $(DIR_OBJS) %.c
$(CC) -o $@ -c $(filter %.c,$^)
$(DIR_DEPS)/%.dep: $(DIR_DEPS) %.c
@echo "making $@..."
@set -e; \
$(RM) $(RMFLAGS) $@.tmp; \
$(CC) -E -MM $(filter %.c,$^) > $@.tmp; \
sed 's,\(.*\)\.o[:]*,objs/\1.o $@:,g' < $@.tmp > $@; \
$(RM) $(RMFLAGS) $@.tmp
clean:
$(RM) $(RMFLAGS) $(DIRS)
相关文章推荐
- AlertDialog(对话框)示例
- 【CodeVS】1245 - Ⅲ - 变式Ⅱ之【Uva】11997 K Smallest Sum
- android(android studio)中使用注解框架butterknife
- SDWebImage源码分析
- 18岁生日
- linux 消息队列
- android studio preference 在哪
- iOS 开发学习之 User Interface(4)UIView 与 UIViewController【一】
- Jquery 动画效果 左右移动
- Poj 3026 Borg Maze
- C++子类如何调用父类构造函数
- ag(The silver search)的使用
- uboot编译学习---执行make TQ2440_config后的,操作过程
- Makefile万能写法(gcc程序以及arm-linux-gcc程序)-转
- 2016 最佳 Linux 发行版排行榜
- [Leetcode]23. Merge k Sorted Lists @python
- 浅析gcc、arm-linux-gcc和arm-elf-gcc的关系-转
- java实现的简单网页爬虫:Servlet + MySQL5.5(二)
- UBOOT编译学习-----配置过程
- python读取写入文件