从项目文档中发现一个很实用的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)/$@ $<