makefile模板

  从项目文档中发现一个很实用的makefile模板

  makefile写出来容易,但要达到专业可用,着实困难.以后就用这个了,妈妈再也不用担心我的make了

 

# ----------------------------------------------------------------------
#
# This makefile has been automatically generated by WinGDB 2.2, build 1191
# Do not edit.
#
# Project: vpurun
#
# ----------------------------------------------------------------------

PLATFORM=unix
BUILD_CONFIGURATION=Debug_Embedded_Linux


ifeq ("$(BUILD_CONFIGURATION)","Debug_Embedded_Linux")
CC= arm-linux-gcc
CXX= arm-linux-g++
AR= arm-linux-ar

#include path
CFLAGS= -g  -I./vpuapi -I./include  -I./vdi -Wall
CXXFLAGS= -g  -I./vpuapi -I./include -Wall
ARFLAGS= cru
LDFLAGS= -lpthread  -lm -Wall

#the program name
RESULT=vpurun

#intermediate dir, objs
INTERMEDIATE_DIR=Debug_Embedded_Linux/obj

#destination
DESTINATION_DIR=.
VPATH= $(INTERMEDIATE_DIR):mvpuapi:src:vdi:vdi/linux:vpuapi:vdi/windows
endif


#.c and path and .h
SOURCES=cdb.c hpi.c main.c cpen.c mm.c vdi.c vdi_osal.c vpuapi.c vpuapifunc.c vpuhelper.c vpuio.c vpurun.c

SOURCEPATHS= src/cdb.c src/main.c  src/cpen.c src/vpuhelper.c src/vpuio.c src/vpurun.c vdi/linux/vdi.c vdi/linux/vdi_osal.c vdi/mm.c vdi/nonos/vdi.c vdi/nonos/vdi_osal.c vdi/windows/hpi.c vdi/windows/vdi.c vdi/windows/vdi_osal.c vpuapi/vpuapi.c vpuapi/vpuapifunc.c

HEADERS= harrier.h cdb.h config.h hpi.h mixer.h cpen.h mm.h regdefine.h vdi.h vdi_osal.h vpuapi.h vpuapifunc.h vpuconfig.h vpuhelper.h vpuio.h vpurun.h vputypes.h


OBJECTNAMES=$(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(SOURCES)))
OBJECTPATHS=$(addprefix $(INTERMEDIATE_DIR)/,$(OBJECTNAMES))

$(DESTINATION_DIR)/$(RESULT): $(OBJECTNAMES)
ifeq ("$(wildcard $(DESTINATION_DIR) )","")
	-$(MKDIR) $(DESTINATION_DIR_MK)
endif
	$(CC) $(CFLAGS) $(SYSROOTFLAGS) $(OBJECTPATHS) -o $@ $(LDFLAGS)

$(INTERMEDIATE_DIR)/vpurun.d: $(SOURCES) $(HEADERS)
ifeq ("$(wildcard $(DESTINATION_DIR) )","")
	-$(MKDIR) $(DESTINATION_DIR_MK)
endif
ifeq ("$(wildcard $(INTERMEDIATE_DIR) )","")
	-$(MKDIR) $(INTERMEDIATE_DIR_MK)
endif
	$(CXX) $(CXXFLAGS) -MM $(SOURCEPATHS) > $@

-include $(INTERMEDIATE_DIR)/vpurun.d

#make clean 
clean:
	$(RM) $(DESTINATION_DIR)/$(RESULT)
	$(RM) $(INTERMEDIATE_DIR)/vpurun.d
	$(RM) $(OBJECTPATHS)

#.o
%.o: %.cpp
	$(CXX) $(CXXFLAGS) -c -o $(INTERMEDIATE_DIR)/$@ $<

%.o: %.c
	$(CC) $(CFLAGS) -c -o $(INTERMEDIATE_DIR)/$@ $<

每天早上叫醒你的不是闹钟,而是心中的梦~
原文地址:https://www.cnblogs.com/vintion/p/4116900.html