Makefile

原创 2003年03月24日 09:17:00
论坛上仍然有人问关于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;

makefile 详细用法之二

最近在学习Linux下的C编程,买了一本叫《Linux环境下的C编程指南》读到makefile就越看越迷糊,可能是我的理解能不行。             于是google到了以下这篇文章。通俗易懂...
  • dapengbusi
  • dapengbusi
  • 2016年09月18日 16:37
  • 1139

Linux下C++的通用Makefile与解析

本文给出万能Makefile的具体实现,以及对其中的关键点进行解析。所谓C++万能Makefile,即可编译链接所有的C++程序,而只需作很少的修改。 号称万能Makefile,一统江湖。我对原版的...
  • zhoujiaxq
  • zhoujiaxq
  • 2014年05月16日 13:54
  • 10371

多层级的makefile编写——递归调用makefile

文件层级结构: │  Makefile │  tmp │ ├─include │      public.h │ └─src     ├─moda     │      Makefile     │ ...
  • wangyuling1234567890
  • wangyuling1234567890
  • 2014年03月25日 23:52
  • 2407

makefile常用写法和简易写法

先说长用到的-l: 小写的l就是依赖的lib库,lib首字母,很好记。 -L: 引用的三方lib库所在目录,lib首字母大写就是目录,也好记。 -I: 少不了头文件目录,还是老路子,include...
  • persitail
  • persitail
  • 2016年09月20日 12:36
  • 674

Linux下Makefile的编写及四个特殊符号的意义@、$@、$^、$<

我们先看三段C++程序: 一、line1的源码 line1.h #ifndef _LINE_1_H #define _LINE_1_H void line1_print(const char...
  • runfarther
  • runfarther
  • 2015年11月25日 14:47
  • 4660

Makefile 实际用例分析(一) ------- 比较通用的一种架构

这里不再说Makefile的基本知识,如果需要学习,那么请参考: 下载:makefile 中文手册 或者 点击打开链接 或者 跟我一起写Makefile( 陈皓 ) 这里说的是一般的实际的一个工...
  • shanshanpt
  • shanshanpt
  • 2013年12月08日 12:20
  • 5449

一点一点学写Makefile(3)-增加第三方库和头文件

我们在写代码的时候不一定都是有自己来完成,一个工程中会大量使用一些比较优秀的动态库、静态库等,我们在使用这些库完成所有的代码后,需要在编译的时候将这些库使用的头文件添加到我们的工程上,将他的库文件也添...
  • qq849635649
  • qq849635649
  • 2016年06月02日 10:19
  • 3888

Makefile 入门与基本语法

在我看来,学会写简单的Makefile,阅读较复杂的makefile,是每一个Linux程序员都必须拥有的基本素质。Makefile可以自动识别哪些源文件被更改过,需要重新编译,那些不需要。从而节省大...
  • Paul_C_V
  • Paul_C_V
  • 2015年05月18日 11:16
  • 6110

编写通用Makefile

近期在看韦东山的数码相框视频,有讲到怎么写一个通用的
  • ymangu
  • ymangu
  • 2014年04月06日 14:37
  • 1276

makefile总结 (可做手册使用)

自己补充两个概念: make:一种控制编译或者重复编译软件的工具 makefile:是一个文本形式的脚本文件,包含一些规则,具体告诉make编译哪些文件,怎么编译。 Makefile 是和 make ...
  • qq_33850438
  • qq_33850438
  • 2016年07月14日 22:02
  • 679
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Makefile
举报原因:
原因补充:

(最多只允许输入30个字)