Games104 反射机制
简单的编译期反射实现——调用clang读取AST树,然后获取反射信息,最后通过代码生成渲染出反射代码然后加入编译构建流程.
比较妙的一点——通过拉取所有的头文件来生成AST,而不是读取整个文件,这样只需要分析接口、符号定义、类型信息等,而不需要涉及具体实现细节,使得整个流程简单高效了不少.
综上所属,反射实现逻辑——
- 生成compile_commands.json
- 拉取runtime等所需要的所有头文件,并写入json中给parser使用
- parser调用clang来实现AST树的遍历,并且生成模板需要的信息
- 使用mustache来做代码生成,渲染所有的反射代码并加入构建
- 继续构建其他部分