通用Makefile模板
SOURCE = $(wildcart *.c)
TARGET = demo
all: clean $(TARGET)
CC = gcc
CFLAGS = -g -Wall -rdynamic
MODIFIED_D := $(shell date +%F)
MODIFIED_T := $(shell date +%T)
MODIFIED = "\"$(MODIFIED_D) $(MODIFIED_T)"\"
CFLAGS += -DVERSION=$(MODIFIED)
OBJ = $(SOURCE:%.c=%.o)
INC_PATH = -I ../libshares/include
LIB_SHARE += -L ../libshares/libs
%.o:%.c
$(CC) -c $^ -o $@ $(CFLAGS) $(INC_PATH)
$(TARGET):$(OBJ)
$(CC) -o $(TARGET) $^ $(LIB_SHARE)
cp $(TARGET) ../bin/
rm -f *.o
ctags * -R
.PHONY:clean
clean:
rm -rf *.o
rm -f $(TARGET) ../bin/$(TARGET) tags
c和c++混合编程的Makefile模板
GCC = gcc
GPP = g++
FLAGS = -g -Wall -rdynamic
CPPFLAGS =
CFLAGS =
INCLUDE =
LIB_SHARE =
PROGRAMNAME = demo
SRC_C = $(wildcard *.c)
OBJ_C = $(patsubst %.c,%.o,$(SRC_C))
SRC_CPP = $(wildcard *.cpp)
OBJ_CPP = $(patsubst %.cpp,%.o,$(SRC_CPP))
%.o:%.cpp
$(GPP) -c $(FLAGS) $(CPPFLAGS) $(INCLUDE) $< -o $@
%.0:%.c
$(GCC) -c $(FLAGS) $(CFLAGS) $(INCLUDE) $< -o $@
all : $(PROGRAMNAME) clean
$(PROGRAMNAME) : $(OBJ_C) $(OBJ_CPP)
$(GPP) $^ -o $@
cp $(PROGRAMNAME) ../bin/
rm -f *.o
ctags * -R
.PHONY:clean
clean:
rm -rf *.o
rm -f $(PROGRAMNAME) ../bin/$(TARGET) tags