makefile函数
http://www.cnblogs.com/tianyajuanke/archive/2013/02/16/2610276.html
通用步骤:
编译时,可以不知钉头文件,如果指定头文件,其作用是当此头文件变化时,重新生成该规则。如果不知道头文件,则当头文件改动时,只能先clean再make。
编译时,目标文件如果为dir/%.o,表示递归查找目录dir下的所有.o文件,同样的,依赖文件中如果也相应的为%.cpp,则表示查找匹配文件中的文件名为cpp文件
-----------------
编译命令:$(CC) $(CFLAGS) -c $< -o $@ 中,$< 表示依赖集,$@ 表示目标集,编译命令一般情况下可以省略。
makefile思路:
1,查找项目目录下的所有.cpp文件
2,将上面找到的变量集后缀.cpp -> .o
3, 将第二部中的变量集,一一加上debug/和release/前缀,可设为$(OUTPUT_DIR),##就是把所有的.o文件单独放到一个文件中集中管理,避免.o文件凌乱分布,如果变量为OUTPUT_OBJS
4,链接:
target:$(OUTPUT_OBJS)
$(LINK) $(OUTPUT_OBJS) $(CFLAGS) -o target $(LIB_PATH) $(LIBS)
5,编译:
$(OUTPUT_DIR)/%.o:%.cpp
$(CC) $(CFLAGS) $(INCLUDE_PATH) -c $< -o $@
#定义编译选项
CC = g++
LINK = g++
CFLAGS = -Wall #定义头文件目录,链接库目录,链接文件
INCLUDE_PATH = -Iinclude
LIB_PATH = -Llib -L/usr/local/lib -Lsrc/lib
LIBS = -lboost_thread -lboost_system -Llib #-ljsoncpp #定义项目代码根目录及所有文件夹目录
SRC_DIR = src
VPATH = $(SRC_DIR)
VPATH += $(SRC_DIR)/base
VPATH += $(SRC_DIR)/data
VPATH += $(SRC_DIR)/include
VPATH += $(SRC_DIR)/operate
VPATH += $(SRC_DIR)/operate/detail #找出所有 .cpp 文件和相应的 .o 文件(带目录)
SRC_FILES = $(foreach n, $(VPATH),$(wildcard $(n)/*.cpp))
OBJ_FILES = $(SRC_FILES:.cpp=.o) #把所有的 .o 文件放到定义好的输出文件夹中统一管理
OUTPUT_DIR := debug
OUTPUT_OBJS = $(addprefix $(OUTPUT_DIR)/,$(subst $(SRC_DIR)/, ,$(OBJ_FILES))) #创建存放 .o 文件的目录结构
$(shell mkdir -p "$(OUTPUT_DIR)")
$(shell mkdir -p "$(OUTPUT_DIR)/base")
$(shell mkdir -p "$(OUTPUT_DIR)/data")
$(shell mkdir -p "$(OUTPUT_DIR)/operate")
$(shell mkdir -p "$(OUTPUT_DIR)/operate/detail") #更新 ctags
#$(shell ctags -R --c++-kinds=+p --fields+iaS --extra=+q .) #定义输出目标名
TARGET = server #链接
$(TARGET) : $(OUTPUT_OBJS)
$(LINK) $(OUTPUT_OBJS) -o $@ $(LIB_PATH) $(LIBS) #编译
$(OUTPUT_DIR)/%.o : %.cpp
$(CC) -c $< -o $@ #清除
.PHONY:clean
clean:
-rm -rf $(OUTPUT_DIR)/*
-rm -rf $(TARGET)
makefile函数的更多相关文章
- 详解Makefile 函数的语法与使用
使用函数: 在Makefile中可以使用函数来处理变量,从而让我们的命令或是规则更为的灵活和具有智能.make所支持的函数也不算很多,不过已经足够我们的操作了.函数调用后,函数的返回值可以当做变量来使 ...
- makefile笔记10 - makefile 函数库文件
函数库文件也就是对 Object 文件(程序编译的中间文件)的打包文件.在 Unix 下,一般是由命令"ar"来完成打包工作. 一.函数库文件的成员 一个函数库文件由多个文件组成. ...
- makefile笔记7 - makefile函数
在 Makefile 中可以使用函数来处理变量,从而让我们的命令或是规则更为的灵活和具有智能. make 所支持的函数也不算很多,不过已经足够我们的操作了.函数调用后,函数的返回值可以当做变量来使用. ...
- 详解Makefile 函数的语法与使用 (转)
使用函数: 在Makefile中可以使用函数来处理变量,从而让我们的命令或是规则更为的灵活和具有智能.make所支持的函数也不算很多,不过已经足够我们的操作了.函数调用后,函数的返回值可以当做变量来使 ...
- 【 MAKEFILE 编程基础之四】详解MAKEFILE 函数的语法与使用!
本站文章均为 李华明Himi 原创,转载务必在明显处注明: 转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/gcc-makefile/771.html ...
- makefile函数集锦【转】
转自:http://blog.csdn.net/turkeyzhou/article/details/8612841 Makefile 常用函数表一.字符串处理函数1.$(subst FROM,TO ...
- 介绍几个常用的makefile函数
addprefix. $(addprefix <prefix>, <name1 name2 ...>) 功能:把<prefix>加到name序列中的每一个元素前面. ...
- makefile 函数
1. findstring $(findstring <find>, <in>) 从 in 中查找 find ,如果找到则返回find,否则返回空 str1=1111 str2 ...
- GCC,GDB,Makefile和IO复用函数
2015.1.22 c高级的环境搭建:GCC编译器:全称 GNU CC,是GNU工具(tool chain)的一种,源码编译成机器码,gcc的编译依赖于很多小工具4.3.3和3.4.3版本的比较稳定 ...
随机推荐
- BackTrack5-r3 w3af无法更新问题解决
wget http://pypi.python.org/packages/source/p/pybloomfiltermmap/pybloomfiltermmap-0.2.0.tar.gz --no- ...
- Table-3个属性的高级用法(colgroup和 frame和rules)
之前我用表格的时候基本是caption.thead.tfoot.tbody.tr.th/td,以为是很完整的表格了,原来发现还有colgroup这东东,确实比直接在td里面colspan好用,另外ta ...
- PHP中CURL方法curl_setopt()函数的一些参数
bool curl_setopt (int ch, string option, mixed value)curl_setopt()函数将为一个CURL会话设置选项.option参数是你想要的设置,v ...
- iOS 线性滚动
在这里,给大家带来简单的滚动实现,首先看一下实现效果. 通过观察不难发现,有很多地方并不是那么容易想出来的,对于篇随笔,感兴趣可以查查相关资料,我就不尽行过多说明,(主要是开考文字,不好说明
- 1.2 ASSEMBLY LANGUAGE
People are much happier moving up the ladder,socially or even technically.So our profession has move ...
- Hibernate save, saveOrUpdate, persist, merge, update 区别
Hibernate Save hibernate save()方法能够保存实体到数据库,正如方法名称save这个单词所表明的意思.我们能够在事务之外调用这个方法,这也是我不喜欢使用这个方法保存数据的原 ...
- 2017 年值得一瞥的 JavaScript 相关技术趋势
跨年前两天,Dan Abramov在Twitter上提了一个问题: JS社区毫不犹豫的抛出了它们对于新技术的预期与期待,本文内容也是总结自Twitter的回复,按照流行度降序排列.有一个尚未确定的小点 ...
- python 3 字符串转 json
from json import *; JSONDecoder().decode('str')
- 通过源码成功启动odoo 10.0
- [BCB] C++ Builder 绘图 绘制直线 —— 基于像素
大三的这前半个学期了,又遇上了这个精通(滑稽) Delphi的老师,人还挺好的其实. 关于他对分辨率的吐槽呀,对Delphi的赞美啊,都是非常幽默的.另外我倒是很欣赏他对他的笔记本的保养[dell i ...