一个简单的makefile

弄了一个简单的makefile文件,记录下,方便以后使用。

##################################################################
# to build the program, just use "make"
# to clean the objs and bin files, use "make clean"
##################################################################


ROOT_DIR      := $(shell pwd)
MODULES       := . api server tools log examples cxx11


PROJECT_NAME  := MyServer
EXTRALIBS     := #-lpthread
LIBS          := pthread log4cplus


#src and include path info
PROJECT_PATH  := $(ROOT_DIR)
OUTPUT_PATH   := $(PROJECT_PATH)/bin
INCS_PATH     := $(PROJECT_PATH)/src
LIBS_PATH     := $(PROJECT_PATH)/lib
SRC_PATH      := $(PROJECT_PATH)/src
SRC_DIRS      := $(addprefix $(SRC_PATH)/, $(MODULES))
EXTRINCPATH   := -I/usr/local/log4cplus/include
EXTRLIBPATH   := -L/usr/local/log4cplus/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH


FINAL_OUTPUT  := $(addprefix $(OUTPUT_PATH)/,$(PROJECT_NAME))
USER_MACROS   := _DEBUG LINUX SERVER


CFLAGS        := -g -fPIC -Wall
CC            := gcc
%.o:%.c
$(CC) $(CFLAGS) $(addprefix -D, $(USER_MACROS)) -I$(INCS_PATH) $(addprefix -I,$(INCS_PATH)) -c $< -o $@


CPPFLAGS      := -std=c++11 -g -fPIC -Wall
CXX           := g++
%.o:%.cpp
$(CXX) $(CPPFLAGS) $(addprefix -D, $(USER_MACROS)) -I$(INCS_PATH) $EXTRINCPATH $(addprefix -I,$(INCS_PATH)) -c $< -o $@


#c source complile
C_SRC             := $(foreach SRC_DIR, $(SRC_DIRS), $(wildcard $(SRC_DIR)/*.c))
C_OBJS            := $(patsubst %.c,%.o,$(C_SRC))


#c++ source complile
CPP_SRC           := $(foreach SRC_DIR, $(SRC_DIRS), $(wildcard $(SRC_DIR)/*.cpp))
CPP_OBJS          := $(patsubst %.cpp,%.o,$(CPP_SRC))


OBJS              := $(C_OBJS) $(CPP_OBJS)


.SECONDARY :%.o $(OBJS)


$(FINAL_OUTPUT):$(OBJS)
$(CXX) $(CPPFLAGS) -o $@ $(OBJS) $(addprefix -L,$(LIBS_PATH)) $EXTRLIBPATH $(addprefix -l,$(LIBS)) $(EXTRALIBS)


build_all:$(FINAL_OUTPUT)


clean:
rm -rf $(C_OBJS) $(CPP_OBJS) $(TEMP_OUTPUT) $(FINAL_OUTPUT)
rm -rf $(OUTPUT_PATH)/$(PROJECT_NAME)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值