dugu项目makefile

dugu项目Makefile目录与配置详解
这篇文章资料来自于网络,对部分知识整理,这里只是记录一下,仅供参考。
dugu项目makefile
目录结构
[dugu]--Makefile.include
          --Makefile
          --[Engine]--Makefile
                         --[Core]--Makefile
                                     --.......
          --[Game]--Makefile
                        --[Src]--Makefile
                                  --[GasRunner]--Makefile
                                                        --*.cpp *.h
                                  --[GmServer]--Makefile
                                                        --*.cpp *.h
                                  --......
          --[Tools]
          --...
######[dugu]--Makefile.include##### 
## make file 各种基本定义
BUILD_FLAG=Debug
#BUILD_FLAG=Release
BUILD_JOBS=-j4
#CC=g++ -ggdb -pipe -rdynamic -w
#CC=g++ -ggdb -D_GLIBCXX_DEBUG -pipe -rdynamic -w
CC=g++ -ggdb -m32 -pipe -rdynamic -w -fpermissive
GCC=gcc -O2 -m32 -pipe -rdynamic -w
MODULE=-c
APP=-Wl,-rpath,. -Wl,--export-dynamic -o
SHARED_LIB=-fpic -shared -o
GO=/usr/local/go/bin/go
OUTPUT_DIR=Bin/$(BUILD_FLAG)/
DEPEND_LIB_COMMON=-lpthread -lrt -ldl
DEPEND_LIB_MYSQL=-lmysqlclient
############[dugu]--Makefile##########
ROOT_DIR=.
include $(ROOT_DIR)/Makefile.include
#包含的子目录
MODULES_DIR=Engine Game Tools
all:
    @for i in $(MODULES_DIR); do \
        cd $$i &&make && cd ..;\
    done;
clean:
    @for i in $(MODULES_DIR); do\
        cd $$i && make clean && cd ..;\
    done;
#####[Engine]--Makefile##########
ROOT_DIR=..
include $(ROOT_DIR)/Makefile.include
#包含的子目录
MODULES_DIR=Core
all:
    @for i in $(MODULES_DIR); do \
        cd $$i &&make && cd ..;\
    done;
clean:
    @for i in $(MODULES_DIR); do\
        cd $$i && make clean && cd ..;\
    done;
######[Engine]--[Core]--Makefile######
ROOT_DIR=../..
include $(ROOT_DIR)/Makefile.include
#包含的子目录
MODULES_DIR=Common lua-5.1.4 LuaScriptEngine net db
all:
    @for i in $(MODULES_DIR); do \
        cd $$i &&make $(BUILD_JOBS) && cd ..;\
    done;
clean:
    @for i in $(MODULES_DIR); do\
        cd $$i && make clean && cd ..;\
    done;
############[Game]--Makefile##########
ROOT_DIR=..
include $(ROOT_DIR)/Makefile.include
MODULES_DIR=Src
all:
    @for i in $(MODULES_DIR); do \
        cd $$i &&make && cd ..;\
    done;
clean:
    @for i in $(MODULES_DIR); do\
        cd $$i && make clean && cd ..;\
    done;
######[Game]--[Src]--Makefile#####
ROOT_DIR=../..
include $(ROOT_DIR)/Makefile.include
MODULES_DIR=GameLogic GameCoreCommon AIObjects CnsRunner  DbsRunner  GasRunner DbsTools GbsRunner LogRunner RcpRunner DaemonTools GmServer Robot
all:
    @for i in $(MODULES_DIR); do \
        cd $$i &&make $(BUILD_JOBS) && cd ..;\
    done;
clean:
    @for i in $(MODULES_DIR); do\
        cd $$i && make clean && cd ..;\
    done;
####[Game]--[Src]--[GasRunner]--Makefile####
ROOT_DIR=../../..
include $(ROOT_DIR)/Makefile.include
#获取工作目录下的所有的.cpp文件列表
FILES=$(wildcard *.cpp)
#替换所有的.cpp为.o
MODULES=$(FILES:%.cpp=%.o)
#MODULES:= $(patsubst %cpp,%o,$(FILES))  
INCLUDE= -I$(ROOT_DIR)/Engine/Include
GAME_INCLUDE= -I$(ROOT_DIR)/Game/Include
APP_DEPEND_LIB= -lCommon -lNet -levent -llua -lLuaWrapper -lGameLogic -lGameCoreCommon -lAIObjects
#生成的目标可执行文件
TARGET=GasRunner
$(TARGET):$(MODULES)
    @$(CC) $(APP) $(TARGET) $(MODULES) -L$(ROOT_DIR)/$(OUTPUT_DIR) $(DEPEND_LIB_COMMON) $(APP_DEPEND_LIB)
    @echo "linking ....." $(TARGET)
    @cp $(TARGET) $(ROOT_DIR)/$(OUTPUT_DIR)
    @echo "Copy " $(TARGET) " to " $(ROOT_DIR)/$(OUTPUT_DIR)
    @mv $(TARGET) GasRunner
    @cp GasRunner $(ROOT_DIR)/$(OUTPUT_DIR)
$(MODULES):%.o:%.cpp
    @$(CC) $(MODULE) $(INCLUDE) $(GAME_INCLUDE) $< -o $@
    @echo Compiling ..... $<
clean :
    rm $(TARGET) *.o
####[Game]--[Src]--[GmServer]--Makefile####    和上Makefile一样,只是一类库少了
ROOT_DIR=../../..
include $(ROOT_DIR)/Makefile.include
FILES=$(wildcard *.cpp)
MODULES=$(FILES:%.cpp=%.o)
INCLUDE= -I$(ROOT_DIR)/Engine/Include
APP_DEPEND_LIB=-lCommon -lNet -levent -llua -lLuaWrapper
TARGET=GmsRunner
$(TARGET):$(MODULES)
    @$(CC) $(APP) $(TARGET) $(MODULES) -L$(ROOT_DIR)/$(OUTPUT_DIR) $(DEPEND_LIB_COMMON) $(APP_DEPEND_LIB)
    @echo "linking ....." $(TARGET)
    @cp $(TARGET) $(ROOT_DIR)/$(OUTPUT_DIR)
    @echo "Copy " $(TARGET) " to " $(ROOT_DIR)/$(OUTPUT_DIR)
$(MODULES):%.o:%.cpp
    @$(CC) $(MODULE) $(INCLUDE) $< -o $@
    @echo Compiling ..... $<
clean :
    rm $(TARGET) *.o
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值