3 ms·
Is header generation substantially faster than compilation? I guess it skips codegen and instead replaces it with header generation, but isn't most of the time
by dataflow 3y ago
Is header generation substantially faster than compilation? I guess it skips codegen and instead replaces it with header generation, but isn't most of the time spent in parsing/semantic analysis? Or is header generation done in some hacky way that's much faster than full parsing?
- netheril96 3y agoI think the point of header generation is not to save compilation time, but to save developer time. Saving them from writing the same thing twice, in header and in implementation.
- 8n4vidtmkvmk 3y agoExactly this. I already have to wait 3 to 10 minutes for compiles. Can't imagine header generation will add substantially more.
- maccard 3y agoIt's not that sort of header generation, it's a straight up code generator. You can write #include "MyClass.gen.h" UCLASS() class UMyClass : public UObject { GENERATED_BODY() public: UPROPERTY(BlueprintReadWrite, EditAnywhere ) float MyFloat = 1.f; UPROPERTY() APlayerController* MyPc; }; in a header, and you get garbage collection, serialisation, script binding, editor UI out of the generated code.
- maccard 3y agoThe header gen is much faster than compilation, and is just a code generator. My project takes about 20 minutes for a clean build, the header generation is about 10 seconds at the beginning.
- dataflow 3y agoHow is that even possible? Is header generation hacky? Or does it really generate the AST?
- maccard 3y agoIt generates a header and cpp file for each header that it parses. It generates some pretty rudimentary c++ with a bunch of macros, and it looks like very generated code. It's then compiled after, but the nature of the generated code is fairly simple c++ so the cost isn't enormous