Files
ServerStatus/server/Makefile
2025-08-12 13:49:25 +08:00

73 lines
1.5 KiB
Makefile

OUT = sergate
# Build mode: make (默认 release) 或 make BUILD=debug
BUILD ?= release
# 自动检测 ccache
CCACHE_BIN:=$(shell which ccache 2>/dev/null)
ifeq ($(CCACHE_BIN),)
CC := gcc
CXX := g++
else
CC := ccache gcc
CXX := ccache g++
endif
COMMON_WARN=-Wall
COMMON_INC=-Iinclude
COMMON_PIPE=-pipe
ifeq ($(BUILD),debug)
CFLAGS = $(COMMON_WARN) -O0 -g $(COMMON_PIPE)
CXXFLAGS = $(COMMON_WARN) -O0 -g -std=c++11 $(COMMON_PIPE)
else
CFLAGS = $(COMMON_WARN) -O2 $(COMMON_PIPE)
CXXFLAGS = $(COMMON_WARN) -O2 -std=c++11 $(COMMON_PIPE)
endif
ODIR = obj
SDIR = src
LIBS = -pthread -lm -lcurl
INC = $(COMMON_INC) -Isrc
# 预编译头(主要加速包含 exprtk.hpp 的 C++ 编译)
PCH_HDR = $(SDIR)/pch.hpp
PCH = $(ODIR)/pch.hpp.gch
C_SRCS := $(wildcard $(SDIR)/*.c)
CXX_SRCS := $(wildcard $(SDIR)/*.cpp)
C_OBJS := $(patsubst $(SDIR)/%.c,$(ODIR)/%.o,$(C_SRCS))
CXX_OBJS := $(patsubst $(SDIR)/%.cpp,$(ODIR)/%.o,$(CXX_SRCS))
OBJS := $(C_OBJS) $(CXX_OBJS)
all: $(OUT)
$(ODIR):
mkdir -p $(ODIR)
$(PCH): $(PCH_HDR) | $(ODIR)
$(CXX) $(INC) $(CXXFLAGS) -MMD -MP -x c++-header $< -o $@
$(ODIR)/%.o: $(SDIR)/%.cpp $(PCH) | $(ODIR)
$(CXX) -c $(INC) $(CXXFLAGS) -MMD -MP -include src/pch.hpp $< -o $@
$(ODIR)/%.o: $(SDIR)/%.c | $(ODIR)
$(CC) -c $(INC) $(CFLAGS) -MMD -MP $< -o $@
$(OUT): $(OBJS)
$(CXX) $(CXXFLAGS) $^ -o $(OUT) $(LIBS)
.PHONY: clean all
clean:
rm -f $(ODIR)/*.o $(ODIR)/*.d $(OUT) $(PCH)
.PHONY: debug release
debug:
$(MAKE) BUILD=debug
release:
$(MAKE) BUILD=release
-include $(ODIR)/*.d