makefile 模板

来源:互联网 发布:制造杀人犯主人公 知乎 编辑:程序博客网 时间:2024/06/06 03:41

生成可执行程序

view plaincopy to clipboardprint?

    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

view plaincopy to clipboardprint?
  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

view plaincopy to clipboardprint?
  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