PROJECT = 10.10.alarm
CFLAG = -Wall -g -I ../include
CXXFLAG = -Wall -g
LFLAG = -Wall -g
LDFLAGS=-Wl,-rpath,/opt/mysql/lib/mysql,-R,/opt/libmylib/bin # 指定运行时动态库加载绝对路径
CC = gcc
CXX = g++
LNK = gcc
EXE = $(PROJECT)
OBJDIR = ./obj
# precompiled header setting
PCH_H = pch.h # precompiled header file
PCH = $(OBJDIR)/pch.h.gch # precompiled header file output
SRCS = 10.10.c ../lib/error.c
OBJS = $(OBJDIR)/10.10.o $(OBJDIR)/error.o
SYSLIB =
CP = cp -v
RM = rm -f
.SUFFIXES:
.SUFFIXES: .o .c .cxx
# The meaning of "$<":
# BSD Pmake: the implied source
# GNU make: the first prerequisite
#.c.o:
# $(CC) $(CFLAG) -c $<
#.c.o:
# $(CC) $(CFLAG) -c $<
#.cpp.o:
# $(CXX) $(CXXFLAG) -c $<
all: $(PCH) $(EXE)
# $> $^
# BSD Pmake all sources not defined
# GNU make not defined all prerequisites
# Both interpret "$@" as target
$(EXE): $(OBJS)
$(LNK) $(LFLAG) -o $@ $> $^ $(LIBS)
# precompiled header file
# $(OBJS): $(PCH)
$(OBJDIR)/%.o : ./%.c
$(CC) -c $(CFLAGS) -o $@ $< $(INC) $(INC1)
$(OBJDIR)/%.o : ../lib/%.c
$(CC) -c $(CFLAGS) -o $@ $< $(INC) $(INC1)
$(PCH): $(PCH_H) | $(OBJDIR)
$(CC) $(CFLAG) $> $^ -o $@
$(OBJDIR):
mkdir $@
clean:
$(RM) $(PCH) $(OBJS)
rm -rf obj
# For Both UNIX-like OS and Microsoft Windows (MinGW/Cygwin)
$(RM) $(EXE) $(EXE).exe