Makefile

来源:互联网 发布:还原mac 编辑:程序博客网 时间:2024/04/26 00:58
论坛上仍然有人问关于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;
原创粉丝点击