博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
我常用的makefile之产生优秀的.depend文件
阅读量:4041 次
发布时间:2019-05-24

本文共 1055 字,大约阅读时间需要 3 分钟。

注:以下文件的.depend文件相应后缀为.d,即xxx.c的.depend文件为xxx.d。

 

直接用gcc -MM产生的.depend文件形如:

test.o : test.c test.h

这样有个坏处,就是当 test.c 文件改变时,.depend文件仍然没变。若新的 test.c 中增加了头文件,则这个头文件并不会在依赖关系中(.dpend文件没变嘛)。所以要把.depend文件和其关联上。即变为

test.o test.d: test.c test.h

实现上面的转换用到了sed。
原理说了,下面就直接贴makefile了
 
 
ARCH=arm
ifeq ($(ARCH), arm)
CC=arm-hisiv200-linux-gcc
AR=arm-hisiv200-linux-ar
AS=arm-hisiv200-linux-as
LD=arm-hisiv200-linux-ld
CPP=arm-hisiv200-linux-g++
CP = cp
else
CC=gcc
AR=ar
AS=as
LD=ld
CPP=g++
CP=cp
endif
 
SRC:=
OBJ:=
 
SRC += $(wildcard ../*.c)
OBJ += $(patsubst %.c, %.o, $(notdir $(SRC)))
 
RULES_OBJ := $(patsubst %.c, %.d, $(filter %.c, $(SRC)))
 
TARGET_LIB=libvod.a
 
VPATH += ../
 
CFLAGS = -Wall -g
LDFLAGS = -lpthread
 
CPPFLAGS += -I../../../include/vod
 
all:$(OBJ)
 $(AR) ruv $(TARGET_LIB) $(OBJ)
 mv $(TARGET_LIB) ../
 
#产生.d文件
%.d: %.c
 $(CC) -MM $(CPPFLAGS) $< | sed -e 's/^\(.*\)\.o/\1\.o \1\.d/' > $@
 
%.o: %.c
 $(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $<
 
clean:
 -rm -f $(OBJ)
 @-rm -f ../$(TARGET_LIB)
 @-rm -f *~ .*swp a.out
 @-rm -f *.o
 @-rm -f *.s
 
.PHONY:clean
 
include $(RULES_OBJ)
 
 
 
 

转载地址:http://paldi.baihongyu.com/

你可能感兴趣的文章
idea讲web项目部署到tomcat,热部署
查看>>
IDEA Properties中文unicode转码问题
查看>>
Idea下安装Lombok插件
查看>>
zookeeper
查看>>
Idea导入的工程看不到src等代码
查看>>
技术栈
查看>>
Jenkins中shell-script执行报错sh: line 2: npm: command not found
查看>>
8.X版本的node打包时,gulp命令报错 require.extensions.hasownproperty
查看>>
Jenkins 启动命令
查看>>
Maven项目版本继承 – 我必须指定父版本?
查看>>
Maven跳过单元测试的两种方式
查看>>
通过C++反射实现C++与任意脚本(lua、js等)的交互(二)
查看>>
利用清华镜像站解决pip超时问题
查看>>
[leetcode BY python]1两数之和
查看>>
微信小程序开发全线记录
查看>>
PTA:一元多项式的加乘运算
查看>>
CCF 分蛋糕
查看>>
解决python2.7中UnicodeEncodeError
查看>>
小谈python 输出
查看>>
Django objects.all()、objects.get()与objects.filter()之间的区别介绍
查看>>