Makefile典型模板

来源:互联网 发布:商务软件解决方案 编辑:程序博客网 时间:2024/06/05 15:43

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*