Chinaunix首页 | 论坛 | 博客
  • 博客访问: 885333
  • 博文数量: 286
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1841
  • 用 户 组: 普通用户
  • 注册时间: 2015-05-09 16:26
文章分类

全部博文(286)

文章存档

2016年(38)

2015年(248)

我的朋友

分类: C/C++

2015-08-26 19:47:06

原文地址: Makefile典型模板 作者:ebayboy

一般应用程序的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)  
 

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

  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* 
阅读(1033) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~