天天看点

Makefile通用模板(linux下c和c++工程)

#设置编译器和编译参数
CC=g++ -std=c++11 -g -Wall

#设置需要包含的头文件目录
CFLAGS = -I./inc

#设置需要包含的动态库和静态库目录
LFLAGS = -L/usr/local/lib

#指定要链接的动态库或静态库
LDEXEFLAGS = -ljemalloc -lcurl

#设置存放.o文件的目录
OBJDIR = obj

#设置存放.c和.cpp文件的目录
SRCDIR += src

ALL_SRC += $(foreach dir, $(SRCDIR), $(wildcard $(dir)/*.cpp))
ALL_OBJ += $(patsubst src/%.cpp, $(OBJDIR)/%.o, $(ALL_SRC))

#设置可执行文件名
all:server

server: $(ALL_OBJ)
	$(CC) $(LFLAGS) $(ALL_OBJ) $(LDEXEFLAGS) -o $@

$(OBJDIR)/%.o: $(SRCDIR)/%.cpp
	$(CC) $(CFLAGS) $(ALL_INCLUDE) -c $< -o $@

#make clean
clean:
	rm -f ./obj/*.o server