简单目录结构Makefile
来源:互联网 发布:网络信息安全大会 编辑:程序博客网 时间:2024/06/16 18:27
一直以来都没有写博客的习惯,这就算是一个简单的开始吧,记录下学习的点滴。
首先说明下用到的函数:
$(notdir <names...>)
从文件名序列<names>中取出非目录部分。非目录部分是指最后一个斜杠(“/”)之后的部分。返回文件名序列<names>的非目录部分。
示例: $(notdir src/hello.c girls)返回值是“hello.c girls”。
$(subst <from>,<to>,<text>)
text中和from中相同的字符用to中的字符代替
示例:$(subst do,don't,i do like you) 返回的值是i don't like you
$(var:<pattern>=<replacement>)相当于 $(patsubst <pattern>,<replacement>,$(var))
即var中满足pattern的部分用replacement部分代替
此makefile用于编译任意目录结构的源程序,使用时只需修改以下选项
示例目录结构:
#获得当前Makefile文件路径,这样就可以在其他路径中用make -f 调用此Makefile了define current_path$(patsubst %/,%, $(dir $(word $(words $(MAKEFILE_LIST)), $(MAKEFILE_LIST))))endefMODULE_PATH=$(call current_path)#指定编译器CC=g++#文件类型为C文件,也可为cpp文件SRCTYPE:=cpp#存放目标文件的相对路径(当前目录为Makefile文件存放的目录),最后不要打斜杠OBJDIR=$(MODULE_PATH)/obj#生成的可执行文件TARGET=$(OBJDIR)/enc.exe#源文件搜索路径,以冒号隔开SRCDIR:= $(MODULE_PATH)/:$(MODULE_PATH)/src:#头文件搜索路径,以冒号隔开INCDIR:= $(MODULE_PATH)/inc#编译器编译选项CFLAGS= #链接选项LDFLAGS=#静态库STATIC_LIBS=#---------------------------------------------------------------------------------------------------------------------------------VPATH := $(SRCDIR):$(INCDIR)#源文件集合SRC_DIR:=$(subst :, ,$(SRCDIR))SRC_FILES=$(SRC_DIR:%=%/*.$(SRCTYPE))#指定编译器头文件路径#subst用空格替换VPATH中的冒号,patsubst在subst返回的每个字符串前面加上-I,override 在FLAGS后面追加patsubst返回的字符串override CFLAGS += $(patsubst %,-I%,$(subst :, ,$(VPATH))) #把SRC_FILES下的文件全部展开并去掉文件路径source= $(notdir $(wildcard $(SRC_FILES)))#objs= $(patsubst %.c,$(OBJDIR)/%.o,$(source))objs= $(source:%.$(SRCTYPE)=$(OBJDIR)/%.o)$(TARGET): $(objs)$(CC) -o $@ $^ $(STATIC_LIBS) $(LDFLAGS)$(objs): $(OBJDIR)/%.o : %.$(SRCTYPE)@mkdir -p $(OBJDIR)$(CC) -c $(CFLAGS) $^ -o $@ .PHONY:cleanclean:-rm -r $(OBJDIR)
0 0
- 简单目录结构Makefile
- makefile分层目录结构
- 适应vs目录结构的makefile
- 多目录多文件[1] 简单Makefile
- 一个简单的多目录makefile
- Android目录结构简单版
- 简单描述SVN目录结构
- 简单Struts2的目录结构
- lucene 目录结构简单介绍
- JAVAjdk目录结构简单介绍
- Linux简单的目录结构
- JAVAjdk目录结构简单介绍
- 一个适用于层级目录结构的makefile模版
- 一个适用于层级目录结构的makefile模版
- 简单温习一下tomcat的目录结构
- Linux之简单的目录结构说明
- Linux系统目录结构以及简单说明
- Linux系统目录结构以及简单说明
- JSP与Servlet跳转方式上的区别
- Java 8无人谈及的八大功能
- iOS开发- ios7人机界面准则
- 用户管理热备份还原drop掉的表空间(不完全恢复的情况)
- 使用htmlunit采集网页+点击网页按钮
- 简单目录结构Makefile
- 浅析Linux字符设备驱动程序内核机制
- Handler的实现原理
- HTML5 音乐播放代码
- Windows 7下VS2008升级补丁
- POJ 3628 Bookshelf 2 题解
- 【Java】Upload file to web services
- 华为机试-将整数倒序输出,剔除重复数据
- Mybatis3.2.6+oracle例子