zoukankan      html  css  js  c++  java
  • `fw服务端非完整` 工程开发初期的工作

    前面写到了一些关于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.这样项目前期就处理完了,下面要考虑一下如何去编码实现.

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

  • 相关阅读:
    标准MIDI文件格式
    David's MIDI Spec
    国庆长假好读书
    vim用法
    ,非你莫属,
    子宫的满足,睡觉前,
    在哪里,
    黑条,
    下单 返回的字段,
    机会啊,游戏啊,转吧,
  • 原文地址:https://www.cnblogs.com/respawn/p/4568841.html
Copyright © 2011-2022 走看看