前面写到了一些关于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./src/lapi.c
  3. lua-5.3./src/lauxlib.c
  4. lua-5.3./src/lbaselib.c
  5. lua-5.3./src/lbitlib.c
  6. lua-5.3./src/lcode.c
  7. lua-5.3./src/lcorolib.c
  8. lua-5.3./src/lctype.c
  9. lua-5.3./src/ldblib.c
  10. lua-5.3./src/ldebug.c
  11. lua-5.3./src/ldo.c
  12. lua-5.3./src/ldump.c
  13. lua-5.3./src/lfunc.c
  14. lua-5.3./src/lgc.c
  15. lua-5.3./src/linit.c
  16. lua-5.3./src/liolib.c
  17. lua-5.3./src/llex.c
  18. lua-5.3./src/lmathlib.c
  19. lua-5.3./src/lmem.c
  20. lua-5.3./src/loadlib.c
  21. lua-5.3./src/lobject.c
  22. lua-5.3./src/lopcodes.c
  23. lua-5.3./src/loslib.c
  24. lua-5.3./src/lparser.c
  25. lua-5.3./src/lstate.c
  26. lua-5.3./src/lstring.c
  27. lua-5.3./src/lstrlib.c
  28. lua-5.3./src/ltable.c
  29. lua-5.3./src/ltablib.c
  30. lua-5.3./src/ltm.c
  31. lua-5.3./src/lundump.c
  32. lua-5.3./src/lutf8lib.c
  33. lua-5.3./src/lvm.c
  34. lua-5.3./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..tar.gz
  3. chmod a+x lua-5.3..tar.gz
  4. tar zxf lua-5.3..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./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.这样项目前期就处理完了,下面要考虑一下如何去编码实现.

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

`fw服务端非完整` 工程开发初期的工作的更多相关文章

  1. node服务端渲染(完整demo)

    简介 nodejs搭建多页面服务端渲染 技术点 koa 搭建服务 koa-router 创建页面路由 nunjucks 模板引擎组合html webpack打包多页面 node端异步请求 服务端日志打 ...

  2. 使用bufferevent进行libevent服务端和客户端的开发

    参考了网上的一些例子,实验了基于bufferevent的开发. 首先是服务端: #include <netinet/in.h> #include <sys/socket.h> ...

  3. 第一篇【Zabbix服务端的完整布署】

    1.环境准备 服务器版本: [root@filestore-v2 ~]# cat /etc/redhat-release CentOS Linux release (Core) 内核版本: [root ...

  4. 游戏服务端pomelo完整安装配置过程

    版权声明:本文为博主原创文章,转载或又一次发表请先与我联系. https://blog.csdn.net/jonahzheng/article/details/27658985 游戏服务端pomelo ...

  5. 微信小程序生成带参数的二维码(小程序码)独家asp.net的服务端c#完整代码

    一)我先用的小程序端的wx.request去调用API,发现竟然是一个坑! wx.request({ url: 'https://api.weixin.qq.com/wxa/getwxacodeunl ...

  6. 适合新手:从零开发一个IM服务端(基于Netty,有完整源码)

    本文由“yuanrw”分享,博客:juejin.im/user/5cefab8451882510eb758606,收录时内容有改动和修订. 0.引言 站长提示:本文适合IM新手阅读,但最好有一定的网络 ...

  7. Day01_搭建环境&CMS服务端开发

    学成在线 第1天 讲义-项目概述 CMS接口开发 1 项目的功能构架 1.1 项目背景 受互联网+概念的催化,当今中国在线教育市场的发展可谓是百花齐放.如火如荼. 按照市场领域细分为:学前教育.K12 ...

  8. 项目开发中的一些注意事项以及技巧总结 基于Repository模式设计项目架构—你可以参考的项目架构设计 Asp.Net Core中使用RSA加密 EF Core中的多对多映射如何实现? asp.net core下的如何给网站做安全设置 获取服务端https证书 Js异常捕获

    项目开发中的一些注意事项以及技巧总结   1.jquery采用ajax向后端请求时,MVC框架并不能返回View的数据,也就是一般我们使用View().PartialView()等,只能返回json以 ...

  9. java版gRPC实战之三:服务端流

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

随机推荐

  1. paip.最省内存的浏览器评测 cah

    paip.最省内存的浏览器评测 cah 作者Attilax  艾龙,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.net/at ...

  2. paip.解决 数据库mysql增加列 字段很慢添加字段很慢

    paip.解决 数据库mysql增加列 字段很慢添加字段很慢 #环境如下: mysql5.6    数据仅仅3w alter table xxx add column yyy int default ...

  3. iOS开发-UITableView滑动视差

    视差滚动是指让多层背景以不同的速度移动,形成立体的运动效果,在Web上应用的比较多,App中倒是见的相对比较少,主要在UITableView中的应用的比较多,尤其是当整个UITableViewCell ...

  4. 详解eNSP下的单臂路由模拟实验配置

    不同VLAN之间的通信可以通过两种方式:单臂路由和三层交换机.其中,单臂路由是通过路由子接口,交换机的某个端口以trunk的方式与路由器的某个端口相连,同时路由器的链接端口配置子接口,配置子接口承载的 ...

  5. 搞了台2ussd服务器

    只上了一颗CPU,内存还没有双通道

  6. 【转】Android类动态加载技术

    http://www.blogjava.net/zh-weir/archive/2011/10/29/362294.html Android应用开发在一般情况下,常规的开发方式和代码架构就能满足我们的 ...

  7. 利用python自动清除Android工程中的多余资源

    我们直接在公司项目中使用,效果良好! 分享出脚本代码,希望对Android研发的同学有帮助. 提示,初学python,开发环境是Sublime Text 2,直接Ctrl+B的,其他环境下没调试过.应 ...

  8. 私有云android客户端2.1.2最新版本(ownCloud简体中文优化版)

    通过安装Ubuntu16.04+LAMP+ownCloud9.1+SSL建立私有云,下载ownCloud android客户端最新源码,针对国际语言简体中文化,修改部分代码,并进行补充.优化,编译生成 ...

  9. U深度利用iso文件制作U盘启动盘

    利用U盘装win10系统: 工具:U深度装机版   文件:win10.iso 步骤1:下载U深度装机版安装 步骤2:打开U深度,制作U盘启动盘,注意选择iso模式,如下图所示 接下来下一步即可,工具会 ...

  10. Scala 深入浅出实战经典 第62讲:Scala中上下文界定内幕中的隐式参数实战详解

    王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载: 百度云盘:http://pan.baidu.com/s/1c0noOt ...