适合写一些小程序的时候使用,方便快捷c语言 c++ 混编亦可
CROSSCOMPILER :=
EXE := test
MKDIR := mkdir
RM := rm -rf
CC :=
$(CROSSCOMPILER)gcc
CFLAG :=
CXX :=
$(CROSSCOMPILER)g++
CXXFLAG :=
LIBS := -lpthread
DIR_OBJS := objs
DIR_EXES := exes
DIR_DEPS := deps
DIRS :=
$(DIR_OBJS)
$(DIR_EXES)
$(DIR_DEPS)
EXE :=
$(addprefix
$(DIR_EXES)/,
$(EXE))
C_SRCS :=
$(wildcard
*.c)
CXX_SRCS :=
$(wildcard
*.cpp)
OBJS :=
$(C_SRCS:.c=.o)
$(CXX_SRCS:.cpp=.o)
OBJS :=
$(addprefix
$(DIR_OBJS)/,
$(OBJS))
DEPS :=
$(C_SRCS:.c=.dep)
$(CXX_SRCS:.cpp=.dep)
DEPS :=
$(addprefix
$(DIR_DEPS)/,
$(DEPS))
.PHONY : rebuild clean all
all :
$(DIR_OBJS)
$(DIR_EXES)
$(EXE)
ifeq (
"$(MAKECMDGOALS)",
"all")
include
$(DEPS)
endif
ifeq (
"$(MAKECMDGOALS)",
"")
include
$(DEPS)
endif
$(EXE) :
$(OBJS)
ifdef C_SRCS
ifdef CXX_SRCS
$(CXX) -o
$@ $(OBJS)
$(LIBS)
else
$(CC) -o
$@ $(OBJS)
$(LIBS)
endif
else
ifdef CXX_SRCS
$(CXX) -o
$@ $(OBJS)
$(LIBS)
endif
endif
$(DIRS) :
$(MKDIR)
$@
$(DIR_OBJS)/
%.o :
%.c
$(CC) -o
$@ -c
$(filter $(C_SRCS),
$^)
$(DIR_OBJS)/
%.o :
%.cpp
$(CXX)
$(CXXFLAG) -o
$@ -c
$(filter $(CXX_SRCS),
$^)
ifeq (
"$(wildcard $(DIR_DEPS))",
"")
$(DIR_DEPS)/
%.dep :
$(DIR_DEPS)
$(C_SRCS)
$(CXX_SRCS)
else
$(DIR_DEPS)/
%.dep :
$(C_SRCS)
$(CXX_SRCS)
endif
@echo "Creating $@ ..."
@set -e; \
$(CC) -MM -E
$(filter $(C_SRCS)
$(CXX_SRCS),
$^) | sed
's,\(.*\)\.o[ :]*,objs/\1.o $@ : ,g' >
$@
rebuild : clean all
clean :
$(RM)
$(DIRS)