码迷,mamicode.com
首页 > 其他好文 > 详细

makefile一个模板

时间:2014-08-06 17:47:21      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   使用   os   文件   ar   div   

INCLUDE+=-I./Include -I/usr/local/include/libxml2 -I/usr/local/ssl/include -I/usr/local/include
 TARGET=Agent
 LIB=-lstdc++ -lrt -lpthread -lxml2
 OBJS:=$(patsubst %.cpp,%.o,$(wildcard *.cpp))


 $(TARGET):${OBJS}
                 $(CC) $^ $(LIB) -g -o $@

.cpp.o:
                 $(CC) $(FLAGS) $(INCLUDE) -g -o $@ -c $<

clean:
                 rm -rf $(TARGET)
                 rm -f $(OBJS)

#########################################

 

rm命令:

 

-f  忽略不存在的文件,从不给出提示。

 

 -r, -R 指示rm将参数中列出的全部目录和子目录均递归地删除。

 

 

一般我们可以使用$(wildcard *.c)”来获取工作目录下的所有的.c文件列表。复杂一些用法;可以使用“$(patsubst %.c,%.o,$(wildcard *.c))”,首先使用“wildcard”函数获取工作目录下的.c文件列表;之后将列表中所有文件名的后缀.c替换为.o。这样我们就可以得到在当前目录可生成的.o文件列表。

patsubst 应该是 makefile 里的一个函数 (如果你问的 patsubst 是其他语言里的,那就别看下面的了)

比方说你在 makefile 里定义了一个变量,内容是一堆 .c 文件的的名字,如

SRC = aaa.c  bbb.c  my.c his.c

你可以用 patsubst 根据 某种模式,将这些名字改成另外的,比如将这些 .c 文件的名字变成 .s 为后缀的名字:

NEW = $(patsubst "%.c", "%.s", ${SRC})

这样 NEW 这个变量中,就记录了 aaa.s  bbb.s  my.s his.s 这些后缀名为 .s 的文件。 上面命令中的模式字符串就是 "%.c" 或 "%.s", 而其中的 "%" 就是特殊的匹配字符,对于 aaa.c 这个字符串来说,  "%.c" 中的% 就匹配 aaa。 这个很像我们在 bash 或者 dos 下用 *.c 匹配所有 .c 文件时候的那个 *

 

makefile一个模板,布布扣,bubuko.com

makefile一个模板

标签:style   blog   color   使用   os   文件   ar   div   

原文地址:http://www.cnblogs.com/notlate/p/3894766.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!