码迷,mamicode.com
首页 > 其他好文 > 详细

项目通用Makefile

时间:2019-04-22 00:32:55      阅读:117      评论:0      收藏:0      [点我收藏+]

标签:++   type   .PHONY   out   util   -o   --   cli   lte   

.PHONY: all clean

OBJ             = obj
BIN             = bin
LIB             = lib
SRC             = src

GCC             = g++
FLAGS           = -Wall -g
DEFINES         = -DLINUX

# 头文件目录
INCLUDES        = $(patsubst %,-I%, /usr/include /szmetro/download/p2p-c++/p2p-ice/src)

# 库文件目录
SYSLIBDIR       = /usr/local/lib
P2PLIB          = /szmetro/download/p2p-c++/p2p-ice/bin
LIBDIRS         = $(patsubst %,-L%, $(LIB) $(SYSLIBDIR) $(P2PLIB))

# 库文件
ICELIB          = Ice IceUtil p2p-ice
LIBS            = $(patsubst %,-l%, $(ICELIB))

# 默认递归3级目录, 不编译的文件请添加到DISCARD
DISCARD         = $(wildcard $(SRC)/test/*.cpp)
OBJS            = $(patsubst $(SRC)/%.cpp,$(OBJ)/%.o, $(filter-out $(DISCARD), $(shell find $(SRC)/* -maxdepth 3 -type f -regex ".*\.cpp")))
OBJDIRS         = $(sort $(patsubst $(SRC)/%,$(OBJ)/%, $(dir $(OBJS))))

# 可执行文件名
EXEC            = $(BIN)/p2p-client

all: MKDIR $(EXEC)

MKDIR:
	mkdir $(OBJDIRS) -p
    
$(EXEC): $(OBJS)
	$(GCC) $(OBJS) -o $@ $(LIBDIRS) $(LIBS)

# Makefile默认目标
$(OBJ)/%.o: $(SRC)/%.cpp
	$(GCC) $(INCLUDES) $(DEFINES) $(FLAGS) -c $^ -o $@

clean:
	rm -fr $(OBJ)/*
	rm -f $(EXEC)

  目录结构如:

.
|-- bin
|-- lib
|-- Makefile
|-- obj
`-- src

  

项目通用Makefile

标签:++   type   .PHONY   out   util   -o   --   cli   lte   

原文地址:https://www.cnblogs.com/itpoorman/p/10747807.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!