首页 > 代码库 > makefile范例
makefile范例
单个文件夹下,指定源文件进行编译,更改头文件后会重新编译
srcs=src1.c src2.c prog.c objs:=$(srcs:.c=.o) deps:=$(srcs:.c=.d) CFLAGS=-c -g -Wall prog:$(objs) gcc -o prog $^ -include $(deps) $(objs):%.o:%.c gcc $(CFLAGS) -MMD -MP -MF"$(@:%.o=%.d)" -o $@ $< .PHONY: clean clean: rm -rf prog *.o *.d单个文件夹下,编译当前文件夹下的所有c文件,更改头文件后会重新编译
srcs=$(wildcard *.c) objs:=$(srcs:.c=.o) deps:=$(srcs:.c=.d) CFLAGS=-c -g -Wall prog:$(objs) gcc -o prog $^ -include $(deps) $(objs):%.o:%.c gcc $(CFLAGS) -MMD -MP -MF"$(@:%.o=%.d)" -o $@ $< .PHONY: clean clean: rm -rf prog *.o *.d单个文件夹下,编译静态库
srcs:=$(wildcard *.c) objs:=$(srcs:.c=.o) deps:=$(srcs:.c=.d) CFLAGS=-c -g -Wall prog:libprog.a gcc -L. -lprog -o prog libprog.a:$(objs) ar r libprog.a $(objs) -include $(deps) $(objs):%.o:%.c gcc $(CFLAGS) -MMD -MP -MF"$(@:%.o=%.d)" -o $@ $< .PHONY: clean clean: rm -rf prog *.o *.d *.a单个文件夹下,编译静态库文件,obj文件放入obj文件,d文件放入dep文件夹,静态库文件放入lib文件夹
srcs:=src1.c src2.c src3.c objs:=$(srcs:.c=.o) deps:=$(srcs:.c=.d) vpath %.a ./lib vpath %.o ./obj CFLAGS=-c -g -Wall prog:libprog.a prog.o gcc obj/prog.o -L./lib -lprog -o prog libprog.a:$(objs) ar r lib/libprog.a $(objs:%=obj/%) -include dep/prog.d prog.o:prog.c gcc $(CFLAGS) -MMD -MP -MF"$(@:%.o=dep/%.d)" -MT"$@" -o obj/$@ $< -include $(deps:%=dep/%) $(objs):%.o:%.c gcc $(CFLAGS) -MMD -MP -MF"$(@:%.o=dep/%.d)" -MT"$@" -o obj/$@ $< .PHONY: clean clean: rm -rf prog lib/*.a obj/*.o dep/*.d单个文件夹下,编译动态库文件
运行程序命令:LD_LIBRARY_PATH=$PWD/lib ./prog
srcs:=$(wildcard *.c) objs:=$(srcs:.c=.o) deps:=$(srcs:.c=.d) CFLAGS=-c -g -Wall -fPIC prog:libprog.so gcc -L. -lprog -o prog libprog.so:$(objs) gcc -shared -fPIC $(objs) -o libprog.so -include $(deps) $(objs):%.o:%.c gcc $(CFLAGS) -MMD -MP -MF"$(@:%.o=%.d)" $< -o $@ .PHONY: clean clean: rm -rf prog *.o *.d *.so
makefile范例
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。