一个通用的Makefile模板
2009-03-12 17:21
357 查看
使用前需要在当前目录下建立一个obj文件夹,用来存放中间文件。*.d文件中包含了对应*.c的依赖文件,*.o文件为对应*.c文件的目标文件。
详细的Makfile资料可以看看GNU make中文手册和跟我一起写Makefile
Makefile通用模板CC=gcc
CFLAGS=-Wall
OBJPATH=obj # .d文件和.o文件保存路径
TARGET=demo # 最终可执行文件
default: $(TARGET)
SOURCE=a.c b.c # 需要编译的.c文件
INCLUDE=
# 获取.d文件名集合
DEPS=$(addprefix $(OBJPATH)/, $(patsubst %.c, %.d, $(filter %.c, $(SOURCE))))
# 获取.o文件名集合
OBJS=$(addprefix $(OBJPATH)/, $(addsuffix .o, $(basename $(SOURCE))))
-include $(DEPS)
# 生成.d文件
$(OBJPATH)/%.d: %.c
$(CC) $(INCLUDE) -MM $< | sed "1s|^|$(dir $@)|" |"
sed "1{x;s|.*|$@: $<|;G;}" > $(basename $@).d
# 生成.o文件
$(OBJPATH)/%.o : %.c
$(CC) $(CFLAGS) -o $@ -c $<
# 链接成可执行文件
$(TARGET): $(OBJS)
$(CC) $(CFLAGS) -o $@ $^
# 清理
clean:
rm -rf $(OBJPATH)/*.d $(OBJPATH)/*.o $(TARGET)
详细的Makfile资料可以看看GNU make中文手册和跟我一起写Makefile
Makefile通用模板CC=gcc
CFLAGS=-Wall
OBJPATH=obj # .d文件和.o文件保存路径
TARGET=demo # 最终可执行文件
default: $(TARGET)
SOURCE=a.c b.c # 需要编译的.c文件
INCLUDE=
# 获取.d文件名集合
DEPS=$(addprefix $(OBJPATH)/, $(patsubst %.c, %.d, $(filter %.c, $(SOURCE))))
# 获取.o文件名集合
OBJS=$(addprefix $(OBJPATH)/, $(addsuffix .o, $(basename $(SOURCE))))
-include $(DEPS)
# 生成.d文件
$(OBJPATH)/%.d: %.c
$(CC) $(INCLUDE) -MM $< | sed "1s|^|$(dir $@)|" |"
sed "1{x;s|.*|$@: $<|;G;}" > $(basename $@).d
# 生成.o文件
$(OBJPATH)/%.o : %.c
$(CC) $(CFLAGS) -o $@ -c $<
# 链接成可执行文件
$(TARGET): $(OBJS)
$(CC) $(CFLAGS) -o $@ $^
# 清理
clean:
rm -rf $(OBJPATH)/*.d $(OBJPATH)/*.o $(TARGET)
相关文章推荐
- 我所使用的一个通用的Makefile模板
- 调试通过的一个通用makefile模板
- 一个C/C++通用的Makefile模板
- 一个适合小型项目的通用Makefile模板
- 一个通用的Makefile模板-转
- 自己调试通过的一个通用makefile模板
- 一个通用Makefile模板
- 一个简单的通用Makefile模板
- 一个通用的Makefile
- 一个较为通用的linux工程目录架构和Makefile
- Makefile通用模板
- 一个通用的makefile写法,自动推导文件的依赖关系
- 一个通用的Makefile
- 一个通用的makefile写法,自动推导文件的依赖关系
- 一个很简单的Makefile模板
- 一个通用的LINUX驱动Makefile
- makefile通用模板
- 一个通用Makefile的编写
- 一个通用的makefile(一)
- 编写一个简单通用的makefile