Makefile典型模板

Makefile典型模板


一般应用程序的Makefile

  1. PRGM = zztest  
  2. CC = gcc  
  3. CPPFLAGS =  
  4. LDFLAGS = -lrt -lz  
  5. CFLAGS = -Wall -ggdb3  
  6. COMPILE = $(CC) $(CPPFLAGS) $(CFLAGS) -c  
  7. LINKCC = $(CC) $(LDFLAGS)  
  8. LIBA = libcshm.a  
  9. SRCS := $(wildcard *.c)  
  10. DEPS := $(patsubst %.c,%.d,$(SRCS))  
  11. OBJS := $(patsubst %.c,%.o,$(SRCS))  
  12. all:$(PRGM)  
  13. $(PRGM):$(OBJS) $(DEPS)  
  14.     $(LINKCC) $(OBJS) $(LIBA) -o $(PRGM)  
  15. %.d:%.c  
  16.     $(CC) -MM $(CPPFLAGS) $< > $@  
  17. %.o:%.c  
  18.     $(COMPILE) $< -o $@  
  19. .PHONY:clean  
  20. clean:  
  21.     rm -f $(OBJS) $(DEPS) $(PRGM)  
  22. explain:  
  23.     @echo "The information represents in the program:"  
  24.     @echo "Final executable name: $(PRGM)"  
  25.     @echo "Source files: $(SRCS)"  
  26.     @echo "Object files: $(OBJS)"  
  27. depend:$(DEPS)  
  28.     @echo "Dependencies are now up-to-date"  
  29. -include $(DEPS)  
PRGM = zztest CC = gcc CPPFLAGS = LDFLAGS = -lrt -lz CFLAGS = -Wall -ggdb3 COMPILE = $(CC) $(CPPFLAGS) $(CFLAGS) -c LINKCC = $(CC) $(LDFLAGS) LIBA = libcshm.a SRCS := $(wildcard *.c) DEPS := $(patsubst %.c,%.d,$(SRCS)) OBJS := $(patsubst %.c,%.o,$(SRCS)) all:$(PRGM) $(PRGM):$(OBJS) $(DEPS) $(LINKCC) $(OBJS) $(LIBA) -o $(PRGM) %.d:%.c $(CC) -MM $(CPPFLAGS) $< > $@ %.o:%.c $(COMPILE) $< -o $@ .PHONY:clean clean: rm -f $(OBJS) $(DEPS) $(PRGM) explain: @echo "The information represents in the program:" @echo "Final executable name: $(PRGM)" @echo "Source files: $(SRCS)" @echo "Object files: $(OBJS)" depend:$(DEPS) @echo "Dependencies are now up-to-date" -include $(DEPS) 


生成动态库的Makefile

  1. CC = gcc  
  2. CFLAGS = -Wall -O2 `pkg-config --cflags glib-2.0`  
  3. LIBCFLAGS = $(CFLAGS) -D_REENTRANT -fPIC  
  4. LIBSRCS := $(wildcard *.c)  
  5. LIBOBJS := $(patsubst %.c,%.o,$(LIBSRCS))  
  6. LIBRARY = libpustation.so.1.0.0  
  7. SONAME = libpustation.so.1  
  8. LIBNAME = libpustation.so  
  9. APPLIB = applogic  
  10. APPLIBSO = $(APPLIB).so  
  11. APPLIBDIR = ../lib  
  12. APPLIBNAME = lib$(APPLIBSO)  
  13. all:$(LIBRARY)  
  14.     cp $(LIBNAME) $(APPLIBDIR)/$(APPLIBNAME)  
  15.     cp $(LIBNAME) $(APPLIBDIR)/$(APPLIBSO)  
  16. $(LIBRARY):$(LIBOBJS)  
  17.     $(CC) -shared -W1,-soname,$(SONAME) $(LIBOBJS) -o $@  
  18.     ln -sf $@ $(LIBNAME)  
  19.     ln -sf $@ $(SONAME)  
  20. $(LIBOBJS):%.o:%.c  
  21.     $(CC) $(LIBCFLAGS) -c $< -o $@  
  22. .PHONY:clean distclean  
  23. clean:  
  24.     rm -f $(LIBOBJS)  
  25. distclean:  
  26.     rm -f $(LIBOBJS) $(LIBRARY) $(SONAME) $(LIBNAME) $(APPLIBDIR)/$(APPLIBNAME) $(APPLIBDIR)/$(APPLIBSO)  
CC = gcc CFLAGS = -Wall -O2 `pkg-config --cflags glib-2.0` LIBCFLAGS = $(CFLAGS) -D_REENTRANT -fPIC LIBSRCS := $(wildcard *.c) LIBOBJS := $(patsubst %.c,%.o,$(LIBSRCS)) LIBRARY = libpustation.so.1.0.0 SONAME = libpustation.so.1 LIBNAME = libpustation.so APPLIB = applogic APPLIBSO = $(APPLIB).so APPLIBDIR = ../lib APPLIBNAME = lib$(APPLIBSO) all:$(LIBRARY) cp $(LIBNAME) $(APPLIBDIR)/$(APPLIBNAME) cp $(LIBNAME) $(APPLIBDIR)/$(APPLIBSO) $(LIBRARY):$(LIBOBJS) $(CC) -shared -W1,-soname,$(SONAME) $(LIBOBJS) -o $@ ln -sf $@ $(LIBNAME) ln -sf $@ $(SONAME) $(LIBOBJS):%.o:%.c $(CC) $(LIBCFLAGS) -c $< -o $@ .PHONY:clean distclean clean: rm -f $(LIBOBJS) distclean: rm -f $(LIBOBJS) $(LIBRARY) $(SONAME) $(LIBNAME) $(APPLIBDIR)/$(APPLIBNAME) $(APPLIBDIR)/$(APPLIBSO) 


生成静态库的Makefile

  1. LIBA = libstatic.a  
  2. AR = ar  
  3. CC = gcc  
  4. CPPFLAGS =  
  5. CFLAGS = -O2  
  6. COMPILE = $(CC) $(CPPFLAGS) $(CFLAGS) -c  
  7. SRCS := $(wildcard *.c)  
  8. OBJS := $(patsubst %.c,%.o,$(SRCS))  
  9. all:$(LIBA)  
  10. $(LIBA):$(OBJS)  
  11.     $(AR) cqs $(LIBA) $(OBJS)  
  12. %.o:%.c  
  13.     $(COMPILE) $< -o $@  
  14. .PHONY:clean distclean  
  15. clean:  
  16.     rm -f $(OBJS)  
  17. distclean:  
  18.     rm -f $(OBJS) $(LIBA)  
LIBA = libstatic.a AR = ar CC = gcc CPPFLAGS = CFLAGS = -O2 COMPILE = $(CC) $(CPPFLAGS) $(CFLAGS) -c SRCS := $(wildcard *.c) OBJS := $(patsubst %.c,%.o,$(SRCS)) all:$(LIBA) $(LIBA):$(OBJS) $(AR) cqs $(LIBA) $(OBJS) %.o:%.c $(COMPILE) $< -o $@ .PHONY:clean distclean clean: rm -f $(OBJS) distclean: rm -f $(OBJS) $(LIBA) 

C与C++混合编译的Makefile

  1. PRGM = zztest  
  2. LIBDIR = ../../lib  
  3. APPLIB = applogic  
  4. APPLIBSO = lib$(APPLIB).so  
  5. CC = gcc  
  6. CPPFLAGS =  
  7. CFLAGS = -Wall -g `pkg-config --cflags glib-2.0`  
  8. CCOMPILE = $(CC) $(CPPFLAGS) $(CFLAGS) -c  
  9. CXX = g++  
  10. CXXFLAGS = -Wall -g `pkg-config --cflags glib-2.0`  
  11. CXXCOMPILE = $(CXX) $(CXXFLAGS) -c  
  12. LDFLAGS = `pkg-config --libs glib-2.0` -L$(LIBDIR) -l$(APPLIB) -lcppunit -ldl -lpthread  
  13. LINKCXX = $(CXX) $(LDFLAGS)  
  14. CSRCS := $(wildcard *.)  
  15. COBJS := $(patsubst %.c,%.o,$(CSRCS))  
  16. CXXSRCS := $(wildcard *.cpp)  
  17. CXXOBJS := $(patsubst %.cpp,%.o,$(CXXSRCS))  
  18. OBJS = $(COBJS) $(CXXOBJS)  
  19. all:$(PRGM)  
  20.     ln -s $(LIBDIR)/$(APPLIBSO)  
  21. $(PRGM):$(OBJS)  
  22.     $(LINKCXX) $(OBJS) -o $(PRGM)  
  23. %.o:%.c  
  24.     $(CCOMPILE) $< -o $@  
  25. %o:%.cpp  
  26.     $(CXXCOMPILE) $< -o $@  
  27. .PHONY:clean  
  28. clean:  
  29.     rm -f $(OBJS) $(PRGM) $(APPLIBSO) core* tmp*  
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值