Makefile模板
来源:互联网 发布:php 手机回收网站源码 编辑:程序博客网 时间:2024/05/01 22:21
常用语法
若有
clean: rm -rf *.o
有叫做clean的文件,则再执行make clean时,将不会执行rm命令。
为了解决这个问题,需要
.PHONY: clean
以使得clean作为总是需要更新执行的目标
各自动变量含义:
$@ 目标文件的完整名称$^ 所有不重复的依赖文件,以空格分开$< 第一个依赖文件的名称$* 不包含扩展名的目标文件名称$? 所有时间戳比目标文件晚的依赖文件,并以空格分开$% 如果目标是归档成员,则该变量表示目标的归档成员名称
使用
include $(HOME_TREE)/mak_common.inc
直接导入其他文件的文本
使用
make -C $(SUB_DIR)
编译子目录相应makefile
典型模板
自动编译同一个目录下的所有文件
SOURCE = $(wildcard *.cpp)OBJS = $(SOURCE:%.cpp=%.o)#OBJS = $(patsubst %.cpp,%.o,$(SOURCE))CFLAGS += -D DEBUGCLFAGS += -Wall CLFAGS += `pkg-config --cflags opencv`LDFLAGS += -lm -lrt -pthread lib_somelib.aLDFLAGS += `pkg-config --libs opencv`PROGRAM = TestINCLUDE_DIR = includeOBJ_DIR = objCXX = g++all:$(PROGRAM)$(PROGRAM):$(OBJ_DIR)/$(OBJS) $(CXX) $(LDFLAGS) $^ -o $@ include $(SOURCE:.cpp=.d) $(OBJ_DIR)/%.o:%.cpp $(CXX) $(CFLAGS) $(INCLUDE_DIR) -c $< -o $@%.d: %.cpp @set -e; rm -f $@; \ $(CXX) -MM $(CFLAGS) $< > $@.$$$$; \ sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \ rm -f $@.$$$$.PHONY:cleanclean: rm -f $(OBJ_DIR)/$(OBJS) *.d $(PROGRAM)
第一行使用我wildcard得到所有.cpp文件路径。
在Makefile规则中,除在变量的定义和函数引用时,通配符会自动展开。此时需要显式使用wildcard,用法$(wildcard PATTERN…) 。它被展开为已经存在的、使用空格分开的、匹配此模式的所有文件列表。
第二行给出所有.o文件名,二三行应该是等价的
详细资料
http://carbs.lofter.com/post/7f79f_bb95d
总之,Make工具从理论上几乎可以满足编译过程的所有要求。但由于其大量的符号和语法规则,学习难度相当于一门语言。而其带来的好处并不对等。
0 0
- makefile模板
- makefile模板
- makefile模板
- makefile 模板
- Makefile模板
- makefile模板
- Makefile 模板
- Makefile模板
- Makefile模板
- Makefile模板
- makefile 模板
- Makefile模板
- makefile 模板
- makefile模板
- makefile模板
- makefile模板
- Makefile 模板
- makefile模板
- Geometry Shader Concepts & Examples
- hadoop集群搭建——轻松版
- Java内存分析一
- nagios4.1.1 + pnp4nagios 0.6.25 的集成 生成图表
- OC基础第三章: 继承 、 封装、多态
- Makefile模板
- 1.windows技巧-开机规避自动打开go_miscrosoft网站
- Java事务的深入理解 JAT
- android studio 快捷键
- Python3学习笔记02
- XMPP客户端库Smack 4.1.4版官方开发文档之八
- 《iOS应用程序开发方法与实践》答疑-关于对象创建、self、成员变量与属性
- char *s="string"和char s[]="string"的区别
- iOS应用架构谈 view层的组织和调用方案