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版本的比较稳定 ...
随机推荐
- codeforces 721C (拓排 + DP)
题目链接:http://codeforces.com/contest/721/problem/C 题意:从1走到n,问在时间T内最多经过多少个点,按路径顺序输出. 思路:比赛的时候只想到拓排然后就不知 ...
- [转]IoC模式
IoC模式 1.依赖 依赖就是有联系,有地方使用到它就是有依赖它,一个系统不可能完全避免依赖.如果你的一个类或者模块在项目中没有用到它,恭喜你,可以从项目中剔除它或者排除它了,因为没有一个地方会依赖它 ...
- 在同台电脑上再次安装MySql需要注意的事项
今天安装了一下mysql,出现的问题主要是在最后一步: msyql 安装到最后一步 start service 错误解决方法 1, 到控制面板里面先把 mysql 删除 . 2. 到 c 盘 C:\P ...
- sql2000不能远程注册服务器上sql2000的解决方法
1. 开始——cmd——telnet Ip 1433 看1433端口是否打开 2.在服务器上查询分析器中输入select @@version查看sql2000的版本,版本号在8.0.2039以下的都 ...
- 上下文管理、线程池、redis订阅和发布
一:上下文管理: 对于一些对象在使用之后,需要关闭操作的.比如说:socket.mysql数据库连接.文件句柄等. 都可以用上下文来管理. 语法结构: Typical usage: @contextm ...
- HTML5地理定位
1.通过navigator.geolocation来获取设备当前位置,返回一个位置对象,可以获得当前经纬度相关信息: 2.navgatior.geolocation的三个方法: getCurrentP ...
- XAMPP 的安装配置(Linux 版)
--姜庭华 msn: jaimejth@live.cn --博客:http://blog.csdn.net/jaimejth 软件下载在以下网站 http://www.apachefriends.o ...
- 使用html模板
创建html---点击next--选择写好的模板
- SVN与git交互
操作的第一步,就是找到版本库,然后打开,有git的文件夹叫版本库 OrderManagement是版本库 第二步,查看日志,在版本库里内部,空白处右键,选择TortoiseGit--showlo ...
- Ext.Window 的常见属性
Ext.Window 的常见属性: plain:true,(默认不是) resizable:false,(是否可以改变大小,默认可以) maximizable:true,(是否增加最 ...