论坛上仍然有人问关于makefile的问题,下面是我总结的一个makefile,其中参考了一些资料,不过有些忘了出处,下面是这些资料的信息,应该可以搜索到,向他们致谢。
How to write a Makefile
GNU make 指南(Goerge Foot,翻译: 哈少)
GNU Make(Richard M. Stallman and Roland McGrath)
#############################################################################
# A general makefile for program.
# Created by mount0N (mount0N@yahoo.com) . 2002.10.12
#
#
# 1, You put all src into the current dir.
# your src file name should be .c or .cpp file.
# 2, And set compile options and program name.
# 3, make depend
# to set src dependency relation at first time and every time your change
# depend relation.
# 4, make
# Everything is ok. you can make makefile. hehe.
#
#############################################################################
CC = gcc
CWARN = -Wstrict-prototypes -Wall -Wunused
CDEFS = -D_DEBUG
CINCS = -I/usr/local/include
CFLAGS = $(CWARN) $(CDEFS) $(CINCS) -g -O2
CXXFLAGS = $(CFLAGS)
LDFLAGS = -pthread -L/usr/local/lib
PROGRAM =
# Donot change below here.
SRCS = $(wildcard *.cpp) $(wildcard *.c)
OBJS = $(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(SRCS)))
DEPEND = makedepend -- $(CFLAGS) --
CTAGS = ctags
all: $(PROGRAM)
$(PROGRAM):$(OBJS)
depend:$(SRCS)
$(DEPEND) $(SRCS)
tags:$(SRCS)
$(CTAGS) $(SRCS)
clean:
-rm -f $(PROGRAM) *.o tags core shar
回复人: mounTon(思考◎痛苦中) ( ) 信誉:100 2002-11-13 11:32:00 得分:0
#############################################################################
# A general makefile for static library.
# Created by mount0N(mount0N@yahoo.com). 2002.10.12
#
# 1, You put all src into the current dir.
# your src file name should be .c or .cpp file.
# 2, And set compile options and lib name.
# 3, make depend
# to set src dependency relation at first time and every time you change
# dependency relation.
# 4, make
# Everything is ok. you can make makefile. hehe.
#
#############################################################################
CC = gcc
CWARN = -Wstrict-prototypes -Wall -Wunused
CDEFS =
CINCS =
CFLAGS = $(CWARN) $(CDEFS) $(CINCS) -g -O2
CXXFLAGS = $(CFLAGS)
DESTLIB = libxxx.a
#LDFLAGS =
# Donot change below here.
SRCS = $(wildcard *.cpp) $(wildcard *.c)
OBJS = $(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(SRCS)))
DEPEND = makedepend -- $(CPPFLAGS) --
ARFLAGS = cru
RUNLIB = ranlib
all: $(DESTLIB)
$(DESTLIB):$(OBJS)
$(AR) $(ARFLAGS) $@ $?
$(RUNLIB) $(DESTLIB)
depend:$(SRCS)
$(DEPEND) $(SRCS)
tags:$(SRCS)
$(CTAGS) $(SRCS)
clean:
-rm -f $(DESTLIB) *.o tags core shar
#############################################################################
# A general makefile for dynamic library.
# Created by mount0N(mount0N@yahoo.com). 2002.10.12
#
# 1, You put all src into the current dir.
# your src file name should be .c or .cpp file.
# 2, And set compile options and lib name.
# 3, make depend
# to set src dependency relation at first time and every time you change
# dependency relation.
# 4, make
# Everything is ok. you can make makefile. hehe.
#
#############################################################################
CC = gcc
CWARN = -Wstrict-prototypes -Wall -Wunused
CDEFS = -D_DEBUG
CINCS = -I/usr/local/include
CFLAGS = $(CWARN) $(CDEFS) $(CINCS) -g -O2
CXXFLAGS = $(CFLAGS)
LDFLAGS = -pthread -L/usr/local/lib
DESTLIB =
# Donot change below here.
SRCS = $(wildcard *.cpp) $(wildcard *.c)
OBJS = $(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(SRCS)))
DEPEND = makedepend -- $(CFLAGS) --
CFLAGS += -fPIC
CXXFLAGS += -fPIC
all: $(PROGRAM)
$(DESTLIB):$(OBJS)
$(CC) -shared -Wl,-soname,$(DESTLIB) $(LDFLAGS) $(LOADLIBES) $(LDLIBS) $^ -o $@
depend:$(SRCS)
$(DEPEND) $(SRCS)
tags:$(SRCS)
$(CTAGS) $(SRCS)
clean:
-rm -f $(DESTLIB) *.o tags core shar
存在的问题:
depend需要makedepend 程序;
tags需要ctags程序,而且只有vim支持程序的tag;