(连载)在 windows 中搭建 lua 应用环境(三)

进入项目实施阶段,如何科学管理多个相对独立又互相联系的 c/c++ 项目,本文将给出一个具体的综合项目框架。

  • 目标

    “综合项目框架”,是笔者自创名词,以示与 visual studio 解决方案、项目等名词区别。综合项目框架,从广义上仍可理解为一个项目,它管理着多个 visual studio 项目。综合管理框架目标包括:
    • git 友好

      所有源代码、配置文件、辅助文件等,都组织在同一目录下,便于 git 管理。
    • 配置文件主导

      充分利用 visual studio 项目配置宏和用户自定义宏,保证跨项目配置信息的一致性,确保多个 c/c++ 项目协同工作。
    • 可扩展性

      根据 lua 运行环境要求,建立统一的 c/c++ 项目管理规则,包括源代码存放、目标输出等,满足未来 lua moduel 的扩展需求。
  • 综合项目框架

    • 文件/目录布局

      \ :综合项目根目录
      |– lib\ :.lib 文件存放目录,同时也是 c/c++ 项目 .lib 文件的输出目录
      |– src\ :从互联网下载的未经任何修改的 c/c++ 源代码,供 visual studio 项目使用
      |– vs\ :存放 visual studio 项目(每个 visual studio 项目按照 solution/project 的方式组织)
      |– vs\public.props :visual studio 用户自定义宏文件,供所有 visual studio 项目使用
      |– bin\ :可执行文件、 .dll 文件、.lua 文件的输出目录,提供 lua 运行环境
    • visaul studio 项目配置宏

      默认情况下,visual studio 项目输出为四种排列组合
    debug/x86debug/x64release/x86release/x64
    本综合项目不涉及源代码调试,所以只关注 release/x86release/x64 两类输出.
    采用相对路径的方式定位 solution 的上级目录和文件,部分用户自定义宏如下:
    $(LibDir)*:$(SolutionDir)..\..\lib\$(Platform)\*
    $(BinDir)*:$(SolutionDir)..\..\bin\$(Platform)\*
    $(SrcDir)*:$(SolutionDir)..\..\src\$(Platform)\*
    $(LuaCDir)*:$(BinDir)*
    $(LuaLDir)*:$(BinDir)lua\*
    $(LuaHeaderDir)*:$(SrcDir)luasource\*
    $(Sqlite3HeaderDir)*:$(SrcDir)sqlite3src\*
  • 结束语

    本文介绍了一个综合项目框架,为提高效率和减小复杂度,该框架在两方面做了简化,一是不考虑 debug 版本的输出,二是忽略了源代码多版本的问题。依托该框架,下一步将编译 lua 解释器(可执行文件,lua 运行核心)和 .lib 文件(供其他 c/c++ 项目编译使用)。