Makefile

已经在csdn注册了有一段时间,本来想在这写写自己的技术心得,但是工作后,越发觉得没时间(可能也是我的借口吧),于是也搁置了。今天却突然想开始写了,写的东西或许比较简单,但也算是自己的一点心得吧。今天的主题是<<Makefile>>。

相信每一个做Linux后台服务器的同事都会知道Makefile。makefile最大的好处就是自动化编译,一旦写好,只要一个make命令,整个工程就完全自动编译,极大了提高了软件开发的效率。下面是我自己写的一个makefile文件,虽然比较小,但麻雀虽小,五脏俱全。

DIR_INC=/usr/local/include
DIR_LIB=/usr/local/lib

DEPS=$(wildcard *.h)
INC_CURL=-I$(DIR_INC)/curl
#
#MORE INCLUDES
#

LIB_CURL=-L$(DIR_LIB) -lcurl
#
#MORE LIBS
#

INCLUDES=$(INC_CURL)
LIBS=$(LIB_CURL)

CXX = g++
CXXFLAGS=-g

%.o:%.cpp $(DEPS)
        $(CXX) $(CXXFLAGS) -o $@ -c $< $(INCLUDES)

TARGET=main
SRCS=$(wildcard *.cpp)
OBJECTS=$(patsubst %.cpp, %.o, $(SRCS))

$(TARGET):$(OBJECTS)
        $(CXX) $(CXXFLAGS) -o $@ $^ $(INCLUDES) $(LIBS)

clean:
        rm -f $(TARGET) *.o

现在对上面的这个文件做简单的说明:

1.你可以根据自己的需要添加更多的头文件和库文件,然后组合起来赋给INCLUDES和LIBS,当然LIBS里面的库文件需要注意下顺序,即它们的依赖关系。否则会出现undefined reference to 'XXX'

2.CXXFLAGS中可以根据自己的需要添加编译选项,比如-g(在gdb的时候可以使用),CXX是编译器,可以使用g++,gcc之类的编译器

3.%.o:%.cp $(DEPS) 这里加上$(DEPS)的原因是当头文件被修改的时候,与改头文件相关的文件都将重新被编译。

4.TARGET是你的生成的可执行文件的名称。

5.clean是伪命令。通过make clean来执行清除目标文件的目的。你也可以创建其他的伪命令,比如打包,上传等。

大概就这些了,没什么东西。。。具体的一些语法规则,google一大堆。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值