makefile自动生成依赖关系 可自动检测头文件变化

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了makefile自动生成依赖关系 可自动检测头文件变化相关的知识,希望对你有一定的参考价值。

DEBUG=1

CC = gcc

CXX=g++

ifeq ($(DEBUG), 1) 

OPTS=-O0 -g -DDEBUG

endif


CFLAGS = -fPIC   -I$(COMPILE_DIR) -I$(vesdkdev)  -I$(es_common) -I$(vesdk) -I$(vesdk)/boost-153/include -I$(vesdkproject)

CXXFLAGS=$(CFLAGS)


Target = libServerCfg.so

VPATH = src 

OBJDIR=obj/

DEPDIR=deps/


CXXFLAGS +=$(OPTS)   

CXXFLAGS +=-I../../global_include/  -I$(CrossOnvifLib)/ClientSo/wrapper -I$(CrossOnvifLib)/ClientSo/onvifgen -I$(CrossPlatformLib)/vesdkdev  \

-I$(CrossOnvifLib)/Common/gsoap/share/gsoap/plugin  -I$(CrossOnvifLib)/Common/gsoap/include -I$(CrossPlatformLib)/es_common -I$(CrossPlatformLib)/vesdk \

-I$(CrossPlatformLib)/vesdkdev/utils/mt/


LDFLAGS+=-shared  -lm -pthread


LIBS   = -lOnvifClient -lsqlite3  -lboost_system 


OBJ=  Helper.o  Media.o DevicesMgmt.o Imaging.o PTZ.o DiskTool.o ServerCfg.o


OBJS = $(addprefix $(OBJDIR), $(OBJ))

DEPS = $(addprefix $(DEPDIR), $(OBJ))


all: obj $(Target)


$(Target): $(OBJS)

@echo make $(Target)

$(CXX)  $(CXXFLAGS) $^ -o [email protected] $(LDFLAGS) $(LIBS)

cp $(Target) /usr/lib


$(OBJDIR)%.o: %.cpp 

$(CC)  $(CXXFLAGS) -c $< -o [email protected]


obj:

mkdir -p obj

deps:

mkdir -p deps

.PHONY: clean


clean:

rm -rf $(OBJS) $(Target)

ifeq ("$(wildcard deps)", "")

     DEP_DIR_DEPS:=deps

endif


include $(DEPS:.o=.d)


$(DEPDIR)%.d: %.cpp $(DEP_DIR_DEPS)

set -e; rm -f [email protected]; \

$(CC) -MM $(CXXFLAGS) $< > [email protected]$$$$; \

sed ‘s,\($*\)\.o[ :]*,$(OBJDIR)\1.o [email protected] : ,g‘ < [email protected]$$$$ > [email protected]; \

rm -f [email protected]$$$$


以上是关于makefile自动生成依赖关系 可自动检测头文件变化的主要内容,如果未能解决你的问题,请参考以下文章

makefile(05)_自动生成依赖关系

自己写makefile

Makefile中自动生成头文件依赖

自动生成依赖关系

makefile新手添加依赖文件的位置

协议缓冲区文件的 Makefile 自动依赖关系问题