注:本文涉及到的设计是很早就完成了,由于个人原因,到现在才发表。
1. 需求
出于文档结构化的思路考虑,有以下要求:
- 相关联的模块应放在一起,关联程度较弱的模块应相互隔离。
- 在命名方式上应当尽量遵寻约定俗成的方式,如
doc
代表 documents 即说明文档、src
代表 source code files 即源代码文件等等。
出于编程和源代码管理的角度考虑,有以下要求:
- 本项目采用 cmake 来进行编译命令预处理,即生成相应的 Makefile 文件。
- Git 系统只能对纯文本文件进行有效的版本管理,不应当将二进制文件等文件加入到 git 的版本管理中。
2. 项目文件层级设计
2.1 根目录
根目录下有以下多个文件(夹):
doc
- 该文件夹是用于存放开发文档、说明文档等文本文件,使用 Github Flavored Markdown 格式编写。
modules
- 该文件夹用于存放第三方库以及供 cmake 使用的第三方库寻找文件
Findxxxx.cmake
。
- 该文件夹用于存放第三方库以及供 cmake 使用的第三方库寻找文件
res
- 该文件夹用于存放一些固定的资源文件,如图片、命令示例等。
src
- 该文件夹用于存放源代码文件,下文将详细解析。
.gitignore
- 该文件是 Git 系统的设置文件,用于忽略不提交的内容。
CMakeLists.txt
- cmake 描述文件,所有编译工作均应在根目录下进行,生成文件将在工作目录下的
build
文件夹。
- cmake 描述文件,所有编译工作均应在根目录下进行,生成文件将在工作目录下的
2.2 源代码文件夹 <ROOT>/src
src/interpolation
存放插值算法相关文件src/physics_engine
存放物理引擎相关文件src/tasks
存放 Xenomai 任务的具体实现的文件src/test
存放单元测试类文件src/CMakeLists.txt
cmake 描述文件src/common.cpp
和src/common.h
存放项目内的全局变量、函数、宏src/main.cpp
主程序入口,包括有 Xenomai 线程初始化等内容。src/unit_test.cpp
单元测试入口,不包含具体测试内容。
3. 未解决的问题
由于本项目中预计可能会出现有静态资源文件,需要复制至运行目录中,但是似乎未找到相应的 cmake API,只能手动复制,有一定的麻烦。