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

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

  • 相关阅读:
    Windows server 2016 解决“无法完成域加入,原因是试图加入的域的SID与本计算机的SID相同。”
    Windows Server 2016 辅助域控制器搭建
    Windows Server 2016 主域控制器搭建
    Net Framework 4.7.2 覆盖 Net Framework 4.5 解决办法
    SQL SERVER 2012更改默认的端口号为1772
    Windows下彻底卸载删除SQL Serever2012
    在Windows Server2016中安装SQL Server2016
    SQL Server 创建索引
    C#控制台或应用程序中两个多个Main()方法的设置
    Icon cache rebuilding with Delphi(Delphi 清除Windows 图标缓存源代码)
  • 原文地址:https://www.cnblogs.com/respawn/p/4568841.html
Copyright © 2011-2022 走看看