一个简单的makefile文件:可以编译指定目录下的所有c和cpp文件,暂未加入自动头文件的依赖。
#!/bin/bash #编译器 CROSS_COMPILING_PATH = #源文件路径 VPATH += ./ #库文件路径 LIB_PATH = -L ./ #CFLAG 头文件路径 CFLAG = -I./
#链接的库 LIB = -lpthread LIB += -lrt CC = $(CROSS_COMPILING_PATH)gcc CXX = $(CROSS_COMPILING_PATH)g++
#目标文件 TARGET = Node
RM = rm SOURCES := $(foreach dir,$(VPATH),$(wildcard $(dir)/*)) SRCS = $(filter %.c,$(SOURCES)) CPP_SRCS = $(filter %.cpp,$(SOURCES)) C_OBJS = $(SRCS:%.c=%.o) CPP_OBJS = $(CPP_SRCS:%.cpp=%.o) OBJS = $(C_OBJS) $(CPP_OBJS) $(TARGET):$(OBJS) $(CXX) $^ $(CFLAG) $(LIB) $(LIB_PATH) -o $@ $(C_OBJS):%.o:%.c $(CC) -c $(CFLAG) $< -o $@ $(CPP_OBJS):%.o:%.cpp $(CXX) -c $(CFLAG) $< -o $@ clean: -$(RM) -f $(OBJS) -$(RM) -f $(TARGET)