当前位置:编程学习 > 网站相关 >>

Makefile典型模板

一般应用程序的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) 
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
 
 
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) 
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
 
 
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) 
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
 
 
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*  
补充:综合编程 , 其他综合 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,