代码改变世界

`fw服务端非完整` 工程开发初期的工作

2015-06-11 13:23  respawn  阅读(928)  评论(0编辑  收藏  举报

前面写到了一些关于cocos2dx在开发中的一些模块以及一些解决方法,那些都属于本人的个人简介和个人倾向的解决方案.最近这几天我完善了一下ui解析的部分,当然也只是抽出一点点时间去做的这件事情.我添加了一个测试模块,保证了前面编码的各个模块都通过,android上面也是测试通过的,这个大家可以放心.现在我要暂时搁置一下cocos2dx系列部分,着手解决服务端部分.

在之前,我想先说一下我写fw服务端的出发点,简单,够用.先解释一下这里,所谓简单,够用.就是能够满足对接前面写到的cocos2dx部分,能够做到协议数据接受后的处理,暂时我还没有考虑组播之类的事情,但是这个后面我会添加.着重点放在从数据的接受解析以及到服务的处理返回过程,中间会涉及到socket处理,任务调度之类.我先定下这个简单的要求就是为了限制自己的思维,使之不会很快的横向发展,至少在我满意的架构出来之前我不想过度的横向发展.好吧,就说这么多.

我选用c,c++接合lua开发,核心的模块我会在c++部分写,不适用tolua++之类的桥接工具,而是使用lua c api作为lvm桥接工具,到服务层的处理我会使用lua服务.这之间其实是一个蛮复杂的过程.现在先说这么多,以后会慢慢总结,慢慢沉淀.另外,我用cmake作为项目构建工具,接合subl和qtcreator开发.我想了很久,最终确定使用qtcreator,是因为对cmake的支持比较好,但是大部分时间我都不会用,可能只是作为一个debug工具而已.

项目的前期雏形我已经搭建出来了.

1 -- fw
2    -- fw-server
3       -- build  (cmake 内部构建模式)
4       -- dep   (项目依赖的第三方扩展,目前我只是提供了lua-5.3.0)
5       -- fw      (工程需要的c++模块封装,也可以认为是自己的库)
6       -- server (应用程序)
7    -- fw-web  (web部分)

 下面使fw-server目录的cmake文件:

 1 cmake_minimum_required(VERSION 2.8)
 2 project(fw-server C CXX)
 3 
 4 option(DEBUG_MODE "Debug or Release Mode?" ON)
 5 
 6 if(DEBUG_MODE)
 7     set(CMAKE_BUILD_TYPE DEBUG)
 8 else(DEBUG_MODE)
 9     set(CMAKE_BUILD_TYPE RELEASE)
10 endif(DEBUG_MODE)
11 
12 set(CMAKE_C_FLAGS_DEBUG "-g -Wall -DFW_DEBUG=1")
13 set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}")
14 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-exceptions -std=c99")
15 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions -std=c++11 -Wno-deprecated-declarations -Wno-reorder")
16 
17 add_subdirectory(dep)
18 add_subdirectory(fw)
19 add_subdirectory(server)

 

下面是dep下面的cmake文件:

1 option(BUILD_LUALIB "Build lua lib on or not?" ON)
2 
3 if(BUILD_LUALIB)
4     add_subdirectory(lua-src)
5 endif(BUILD_LUALIB)

 

在此处,我提供了cmake开关,可以来控制工程编译时对依赖的控制.我现在只是添加了一个依赖lualib,所以可以看一下:

 1 set(LUA_SRC
 2     lua-5.3.0/src/lapi.c
 3     lua-5.3.0/src/lauxlib.c
 4     lua-5.3.0/src/lbaselib.c
 5     lua-5.3.0/src/lbitlib.c
 6     lua-5.3.0/src/lcode.c
 7     lua-5.3.0/src/lcorolib.c
 8     lua-5.3.0/src/lctype.c
 9     lua-5.3.0/src/ldblib.c
10     lua-5.3.0/src/ldebug.c
11     lua-5.3.0/src/ldo.c
12     lua-5.3.0/src/ldump.c
13     lua-5.3.0/src/lfunc.c
14     lua-5.3.0/src/lgc.c
15     lua-5.3.0/src/linit.c
16     lua-5.3.0/src/liolib.c
17     lua-5.3.0/src/llex.c
18     lua-5.3.0/src/lmathlib.c
19     lua-5.3.0/src/lmem.c
20     lua-5.3.0/src/loadlib.c
21     lua-5.3.0/src/lobject.c
22     lua-5.3.0/src/lopcodes.c
23     lua-5.3.0/src/loslib.c
24     lua-5.3.0/src/lparser.c
25     lua-5.3.0/src/lstate.c
26     lua-5.3.0/src/lstring.c
27     lua-5.3.0/src/lstrlib.c
28     lua-5.3.0/src/ltable.c
29     lua-5.3.0/src/ltablib.c
30     lua-5.3.0/src/ltm.c
31     lua-5.3.0/src/lundump.c
32     lua-5.3.0/src/lutf8lib.c
33     lua-5.3.0/src/lvm.c
34     lua-5.3.0/src/lzio.c
35 )
36 
37 add_library(lua STATIC ${LUA_SRC})
38 
39 set_target_properties(lua PROPERTIES 
40     ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/deplib"
41     LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/deplib"
42 )

 

我没有对依赖源码结构做任何调整,只是简单的提供了一个下载解压lua源码的脚本.

1 #!/bin/sh
2 curl -R -O http://www.lua.org/ftp/lua-5.3.0.tar.gz
3 chmod a+x lua-5.3.0.tar.gz
4 tar zxf lua-5.3.0.tar.gz

 

fw模块我暂时没有做任何处理,所以cmake文件是空的,我只是简单提供server下的一个main.cc文件,下面是server下的cmake工程文件:

 1 set(BIN_NAME ${PROJECT_NAME})
 2 set(BIN_SRC
 3     main.cc
 4 )
 5 
 6 include_directories(
 7     ${CMAKE_SOURCE_DIR}/dep/lua-src/lua-5.3.0/src
 8 )
 9 
10 add_executable(${BIN_NAME} ${BIN_SRC})
11 
12 target_link_libraries(${BIN_NAME}
13     lua
14 )
15 
16 set_target_properties(${BIN_NAME} PROPERTIES
17     RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
18 )

 

我讲gcc/g++搜索路径处理好了,链接到lua库,其他的并没有处理.然后就可以进入build目录执行cmake .. && make.这样项目前期就处理完了,下面要考虑一下如何去编码实现.

我会在后续的文章中继续更新这一系列的处理.