在当前文件或子目录下自动编译:
SHELL=/bin/sh
CC = $(CROSS_COMPILE)gcc
CXX = $(CROSS_COMPILE)g++
LD = $(CROSS_COMPILE)ld
CFLAGS +=
LDFLAGS +=-L.
MAKE_DIR=$(PWD)
CFLAGS += $(INCLS)
CXXFLAGS += $(INCLS)
#find all the sub-directory
VPATH=$(foreach dir,$(shell find . -type d),$(shell echo $(dir):))
#include all the sub-directory
INCLS=$(foreach dir,$(subst :, ,$(VPATH)),$(shell echo -I$(dir)))
#find all .c and produce .o
C_SRC_PATH = $(foreach dir,$(subst :, ,$(VPATH)),$(wildcard $(dir)/*.c))
COBJS = $(subst .c,.o,$(C_SRC_PATH))
#find all .cxx and produce .o
CPP_SRC_PATH = $(foreach dir,$(subst :, ,$(VPATH)),$(wildcard $(dir)/*.cxx))
CPPOBJS = $(subst .cxx,.o,$(CPP_SRC_PATH))
execobjs = $(COBJS) $(CPPOBJS)
#the scripts for compile
.PHONY: all
all: $(execobjs)
$(CXX) -o application $(execobjs) $(LDFLAGS)
$(COBJS):%.o:%.c
$(CC) -c $< -o $@ $(CFLAGS)
$(CPPOBJS):%.o:%.c
$(CC) -c $< -o $@ $(CXXFLAGS)
#the scripts for clean
.PHONY: clean
clean:
rm application $(execobjs)
关于 “Makefile:3:***遗漏分隔符。停止 。”解决方法二
设置为两个table,在vim 的配置文件 .vimrc 中 添加
1 2 3 |
|