Makefile 模板
模板介绍
- 支持存放中间文件的文件夹检查和创建
- 支持源文件位于不同文件夹内
模板
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)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!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 分)