包含子目录的makefile例子
来源:互联网 发布:软件开发工程师学习班 编辑:程序博客网 时间:2024/06/12 15:19
最近在看makefile和gcc方面东西,对于庞大的多级目录文件系统,如果要生成一个可执行文件,需要很好掌握包含子目录的makefile的写法
#=============================================
# 下面是 testmake/makefile 文件内容
#=============================================
SOURCES = $(wildcard *.c)
#当前目录下所有.c为源文件
OBJS = $(patsubst %.c, %.o, $(SOURCES))
#当前目录除去.c文件的.o文件
HEADERS = $(wildcard *.h)
#当前目录所有.h为头文件
STA_DIR = sta
#子目录名
SOURCES_STA = $(wildcard $(STA_DIR)/*.c)
#子目录源文件
OBJS_STA = $(patsubst %.c, %.o, $(SOURCES_STA))
#子目录.o文件
INCLUDE = -I./sta
#
TARGETS = teststa
#目标文件,就是最后生成的可执行文件名
all : STA $(TARGETS)
.PHONY: all clean
%.o : %.c
$(CC) -c $(CFLAGS) $(INCLUDE) $^ -o $@
$(TARGETS):
#echo显示一些信息
@echo "sources_sta:" $(SOURCES_STA)
@echo "source : "$(SOURCES)
@echo "objs : " $(OBJS)
@echo "objs_sta "$(OBJS_STA)
$(CC) $(SOURCES) $(OBJS_STA) $^ -o $@
#编译当前目录和子目录的源文件,生成.o文件
STA:
@cd sta/;make all;
#切换到子目录
clean :
rm $(TARGETS) $(OBJS)
#=============================================
# 下面是 testmake/sta/makefile 文件内容 sta是子目录,下面存放公共代码
#=============================================
SOURCES = $(wildcard *.c)
OBJS = $(patsubst %.c, %.o, $(SOURCES))
HEADERS = $(wildcard *.h)
TARGETS = sta.a
all : $(TARGETS)
.PHONY: all clean
include $(SOURCES:.c=.d)
%.d: %.c
set -e; rm -f $@; /
$(CC) -MM $(CPPFLAGS) $< > $@.$$$$; /
sed 's,/($*/)/.o[ :]*,/1.o $@ : ,g' < $@.$$$$ > $@; /
rm -f $@.$$$$
@echo $(SOURCES)
@echo $(OBJS)
ar rcs $@ $^
clean :
rm $(TARGETS) $(OBJS)
teststc.c可以是一个main的空函数,不要是空文件!
- 包含子目录的makefile例子
- 编译所有子目录的makefile
- 编译所有子目录的makefile
- 主makefile套用子目录下的makefile
- Makefile例子,能够引用子目录下的源文件,并将二进制文件存放到相应目录
- 制作一个遍历当前子目录的Makefile
- 一个遍历当前子目录的Makefile
- 多子目录的makefile编译库模板
- Makefile之大型工程项目子目录Makefile的一种通用写法
- Makefile之大型工程项目子目录Makefile的一种通用写法
- Makefile之大型工程项目子目录Makefile的一种通用写法
- Makefile之大型工程项目子目录Makefile的一种通用写法
- Makefile之大型工程项目子目录Makefile的一种通用写法
- 一个Makefile的例子
- 一个Makefile的例子
- 一个makefile的例子
- 简单的makefile例子
- Makefile的一个例子
- 大数处理之:能被六整除的数串
- Linq删除
- 用户体验的76个体验点
- iphone开发之获取是否飞行模式和设备IMEI
- Ewebeditor 2.1.6上传漏洞 UNION运用-直接得SHELL
- 包含子目录的makefile例子
- Linux音频编程指南
- zoj 2146
- unable to load bean jar包冲突
- 总结的一些jquery获取更改dom元素常用方法
- 设计模式-结构型模式-适配器
- 总结的一些jquery获取更改dom元素常用方法
- MYSQL SHOW的跟中犀利
- POSIX定时器:timer_settime()的使用