Makefile典型模板

转自:http://sunpeng.wikidot.com/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* 

你可能感兴趣的:(Makefile典型模板)