您的位置:首页 > 其它

一个通用的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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: