在上一次说完之后,经过了不断的中断和不断的磨难,决定接着往前走。就像目前这篇文章,在经过不断的重启,被迫重写,最后才展现。虽然还不知道等下能不能发出去,但希望能发出去。
首先要说明的是目录结构等很多地方都参考了mochiweb,所以,如果看到类似的代码或者结构的话,不要感到奇怪。先是运行脚本和调试运行脚本,两个的区别在于调试运行可以检测到代码的更新,并强制更新(自我感觉是这样子的,因为我基本上没有运行过运行脚本)。
#!/bin/sh
#file server/start.sh
cd `dirname $0`
exec erl -pa $PWD/ebin $PWD/deps/*/ebin -boot start_sasl -s netgame
#!/bin/sh
#file server/start-dev.sh
cd `dirname $0`
exec erl -pa $PWD/ebin $PWD/deps/*/ebin -boot start_sasl -s reloader -s netgame -sname rix -heart -setcookie netgame
上面的代码,start.sh应该还需要添加-sname rix等参数,因为我基本上没用过,所以也就没有添加,随自己喜好吧。
makefile文件:
#file server/makefile
all:
(cd src;$(MAKE))
clean:
(cd src;$(MAKE) clean)
没什么好说的。
#file server/src/Makefile
include ../support/include.mk
all: $(EBIN_FILES)
cd driver && make
debug:
$(MAKE) DEBUG=-DDEBUG
clean:
rm -rf $(EBIN_FILES)
也没什么好说的。
#file server/support/include.mk
## -*- makefile -*-
######################################################################
## Erlang
ERL := erl
ERLC := $(ERL)c
INCLUDE_DIRS := ../include $(wildcard ../deps/*/include)
EBIN_DIRS := $(wildcard ../deps/*/ebin)
ERLC_FLAGS := -W $(INCLUDE_DIRS:../%=-I ../%) $(EBIN_DIRS:%=-pa %)
ifndef no_debug_info
ERLC_FLAGS += +debug_info
endif
ifdef debug
ERLC_FLAGS += -Ddebug
endif
EBIN_DIR := ../ebin
DOC_DIR := ../doc
EMULATOR := beam
ERL_SOURCES := $(wildcard *.erl)
ERL_HEADERS := $(wildcard *.hrl) $(wildcard ../include/*.hrl)
ERL_OBJECTS := $(ERL_SOURCES:%.erl=$(EBIN_DIR)/%.$(EMULATOR))
ERL_DOCUMENTS := $(ERL_SOURCES:%.erl=$(DOC_DIR)/%.html)
ERL_OBJECTS_LOCAL := $(ERL_SOURCES:%.erl=./%.$(EMULATOR))
APP_FILES := $(wildcard *.app)
EBIN_FILES = $(ERL_OBJECTS) $(ERL_DOCUMENTS) $(APP_FILES:%.app=../ebin/%.app)
EBIN_FILES_NO_DOCS = $(ERL_OBJECTS) $(APP_FILES:%.app=../ebin/%.app)
MODULES = $(ERL_SOURCES:%.erl=%)
../ebin/%.app: %.app
cp $< $@
$(EBIN_DIR)/%.$(EMULATOR): %.erl
$(ERLC) $(ERLC_FLAGS) -o $(EBIN_DIR) $<
./%.$(EMULATOR): %.erl
$(ERLC) $(ERLC_FLAGS) -o . $<
$(DOC_DIR)/%.html: %.erl
$(ERL) -noshell -run edoc file $< -run init stop
mv *.html $(DOC_DIR)
没什么好说的。
上面是服务器的脚本,客户端也是使用类似的makefile进行管理的,因为主要是说服务器的部分,因此,客户端的部分就不提了。下面是整个项目的目录结构:
1.目录结构:
netgame
|-- client
| `-- mobile
| `-- phone
| `-- j2me
| |-- bin
| |-- res
| |-- src
| `-- temp
`-- server
|-- doc
|-- ebin
|-- include
|-- makefile
|-- src
| `-- Makefile
|-- start-dev.sh
|-- start.sh
`-- support
`-- include.mk
14 directories, 5 files