makefile 模板

生成可执行程序

    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)  
 

生成静态库的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)  
 

C与C++混合编译的Makefile

    PRGM = zztest  
    LIBDIR = ../../lib  
    APPLIB = applogic  
    APPLIBSO = lib$(APPLIB).so  
    CC = gcc  
    CPPFLAGS =  
    CFLAGS = -Wall -g `pkg-config --cflags glib-2.0`  
    CCOMPILE = $(CC) $(CPPFLAGS) $(CFLAGS) -c  
    CXX = g++  
    CXXFLAGS = -Wall -g `pkg-config --cflags glib-2.0`  
    CXXCOMPILE = $(CXX) $(CXXFLAGS) -c  
    LDFLAGS = `pkg-config --libs glib-2.0` -L$(LIBDIR) -l$(APPLIB) -lcppunit -ldl -lpthread  
    LINKCXX = $(CXX) $(LDFLAGS)  
    CSRCS := $(wildcard *.)  
    COBJS := $(patsubst %.c,%.o,$(CSRCS))  
    CXXSRCS := $(wildcard *.cpp)  
    CXXOBJS := $(patsubst %.cpp,%.o,$(CXXSRCS))  
    OBJS = $(COBJS) $(CXXOBJS)  
    all:$(PRGM)  
        ln -s $(LIBDIR)/$(APPLIBSO)  
    $(PRGM):$(OBJS)  
        $(LINKCXX) $(OBJS) -o $(PRGM)  
    %.o:%.c  
        $(CCOMPILE) $< -o $@  
    %o:%.cpp  
        $(CXXCOMPILE) $< -o $@  
    .PHONY:clean  
    clean:  
        rm -f $(OBJS) $(PRGM) $(APPLIBSO) core* tmp*  


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值