BoomingTech / Piccolo

Piccolo (formerly Pilot) – mini game engine for games104
MIT License
5.69k stars 1.79k forks source link

关于反射生成代码的一点建议 #425

Closed hebohang closed 1 year ago

hebohang commented 1 year ago

目前是使用一个 custom target 完成的,并且添加了 runtime 对此的依赖: https://github.com/BoomingTech/Piccolo/blob/65379de9f67fe9c1d809e925c459d397e680ea8a/engine/source/precompile/precompile.cmake#L40

这样做会导致在写引擎的时候无论是用cmake项目还是生成出ide来使用,都会在编译时运行一遍 parser 生成出所需代码(_generated),并且runtime中依赖codegen出来的那些文件都会由于_generated被重新生成而重新编译。

如果不考虑像ue那样给客户使用也添加反射功能,可以把 codegen 单独写成一个批处理命令,例如在cmake中使用 execute_process 替代 add_custom_target,这样就把 parser 从编译时给提前到了 cmake 构建时运行,可以有效缩短编译时间。

liangzai12 commented 1 year ago

与 #426 重复