makefile一个模板

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 [email protected]

.cpp.o:
                 $(CC) $(FLAGS) $(INCLUDE) -g -o [email protected] -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一个模板

时间: 2024-10-14 08:17:21

makefile一个模板的相关文章

继承BaseAdapter的一个模板

Context context; private List<String> list; LayoutInflater inflater; public XialaDistanceAdapter(Context context,List<String> list){ this.context = context; this.list = list; inflater=LayoutInflater.from(context);    } @Override public int get

【足迹C++primer】57、定义一个模板

定义一个模板 比较大小的函数如果v1和v2相同返回0,v1小-1,v2小1 int compare(const string &v1, const string &v2) { if(v1<v2) return -1; if(v1>v2) return 1; return 0; } int compare(const double &v1, const double &v2) { if(v1<v2) return -1; if(v1>v2) retur

handlebars——另外一个模板引擎

什么是handlebars? handlebars库是另外一个模板引擎,他继承mustache(胡子),感觉没有jade(珠宝)好听,他不允许在模板中写很多JavaScript的逻辑.这有助于保持模板的简洁. handlebars语法 handlebars需要严格的书写html的标签!!!...光是这一点,我感觉就没有jade好用啊. 变量 demo <h1>{{title}}</h1> <h1>{{body}}</h1> 数据: { title:"

thinkphp 使每一个模板页都包括一个header文件和一个footer文件

在开发的过程中,常常遇到要使每一个模板页都包括一个header文件和一个footer文件.thinkPHP的模板布局为我们提供了一个叫全局配置方式可以解决问题. 1. 在配置文件里开启LAYOUT_ON 參数(默认不开启),而且设置布局入口文件名称LAYOUT_NAME(默觉得layout) 'LAYOUT_ON'=>true, 'LAYOUT_NAME'=>'layout', 2. 在模板文件夹下建立一个layout.html文件,文件内代码例如以下: <include file=&q

05 layer 和 jquery,涉及一个模板导入方法

刚刚入手用layer感觉特别方便,简单记录一下 1.http://layer.layui.com/ 这里是layer的官网,里面有最新版本的layer.js. 2.不是最新的就是最好,最新版本已经不支持ie6了,根据项目需要自己选择一个版本下载 3.安装方法:(animate中) 3.1将你目前做的东西导出一个模板.(先点击图片中1的部分) 3.2 打开导出的html文件.在此模板中即可进行配置(所有配置项都在your code here后面写),jquery是可以找线上版本,我这里直接是下载到

Makefile一个cpp文件依赖于多个header文件的陷阱

我一直以为,如果一个A.cpp文件中有多少条 #include "xxx.h"指令,在写Makefile的时候A.obj的依赖项除了A.cpp之外,就是A.cpp之内所有的 xxx.h 比如,如果A.cpp中有 #include "A.h" #include "B.h" #include "C.h",那么在Makefile中就有:A.obj: A.cpp A.h B.h C.h 但是 下面的例子是说明了,上面的想法是错误的 先

ie8下使用knockoutjs遇到的一个模板异常

ViewModel中有一个数组,代码大概如下: function ReportViewModel(){ var self = this; self.extendedProperties = ko.observableArray([]); ... } 在从服务端获取到数据之后,使用下面的代码更新模型: for (var index in json.extendProperties) { reportViewModel.extendedProperties.push(extendProperties

makefile 文件模板

.SUFFIXES:.c .o //.c和.o建立关联 CC=gccSRCS=hello.c\ add.c //同时编译两个.c文件 OBJS=$(SRCS:.c=.o)//ORJS=hello.o add.oEXEC=hello start: $(OBJS) //依赖hello.o add.o $(CC) -o $(EXEC) $(OBJS) @echo '----------------ok------------' .c.o: $(CC) -o [email protected] -c $

Makefile 小模板

首先在工程文件夹下创建bin,src,lib,以及include等文件夹,在工程文件夹外创建lib或者lib64文件夹,将文件类型分别放入工程文件夹下的几个文件夹,然后根据实际需要对下面的Makefile1进行实际需要的改写即可,最终会在src下生成*.o等obj文件,以及在工程文件夹外的lib或者lib64下生成需要的静态库文件.这里并没有生成.exe执行文件 WORKROOT=../.. LIBNAME = flumelog BIN_DIR = bin SRC_DIR = src LIB_D