Makefile 模板(二)

Makefile 模板

模板介绍

  1. 支持存放中间文件的文件夹检查和创建
  2. 支持源文件位于不同文件夹内

模板

OBJOUT := ./out/
EXEOUT := ./out/
INCLUDE_DIR := ./include
SRC_DIR_TEST = ./src/test/
SRC_DIR_THREADPOLL = ./src/WorkThread/
LIB := -lpthread

SRC := $(wildcard $(SRC_DIR_TEST)*.cpp)
SRC += $(wildcard $(SRC_DIR_THREADPOLL)*.cpp)
OBJ := $(patsubst %.cpp,%.o, $(SRC))

TARGET := threadpool
CC := g++
CXXFLAG = -std=c++11
CFLAGS := -I$(INCLUDE_DIR)

all: PRE_CHECK $(TARGET) 
$(TARGET) : $(OBJ)
	@echo "SRC: " $(SRC)
	@echo "OBJ: " $(OBJ)
	@echo "TARGET: " $(TARGET)
	$(CC) $(CFLAGS) $(CXXFLAG) $^ -o $(TARGET) $(LIB)
	mv $^ $(OBJOUT)
	@echo "Compiling" $@ "end\n"

%.o : %.cpp
	echo "Compiling " $< "...."
	$(CC) $(CFLAGS) $(CXXFLAG) -c $^ -o $@ $(LIB)
	@echo "Compiling " $@ "end\n"

PRE_CHECK:
	@if [ ! -d $(OBJOUT) ];then \
		echo "Folder $(OBJOUT) does not exist, creating it..."; \
		mkdir $(OBJOUT); \
	else	\
		echo "Folder $(OBJOUT) already exists, nothing to do";	\
	fi

.PHONY: clean

clean:
	rm -rf $(TARGET) $(OBJOUT)* $(OBJOUT)

posted @   王清河  阅读(29)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
历史上的今天:
2019-11-17 09-排序2 Insert or Merge (25 分)
2018-11-17 07-图4 哈利·波特的考试 (25 分)
点击右上角即可分享
微信分享提示