Earlier quoted context omitted.
> I suspect there’s compilation optimizations to be made There definitely are. I've spent a lot of time with UBT, and a "reasonable" amount of time with cmake and friends. UBT isn't quite the same as CMake + Ninja. UBT does "adaptive" unity builds, globbing, and a couple of other things. > but I don’t think it would save more than 30% here and there. Agreed. The clean build with UBT is painfully slow compared to Cmak…
The big issue, in addition to speed, I had with UBT was how difficult it was to debug when it did the wrong thing. Often this was when having to adopt new Xcode versions, where CMake gave a lot of escape hatches to adapt it whereas UBT required spelunking. At some points, there’s multiple layers of historic cruft that just seem arcane. Last year, epic released a video where an engineer went through it and even they h…
Unity builds lurked into the Firefox Build System
61–64 of 64 posts
Re: Unity builds lurked into the Firefox Build System
#62Earlier quoted context omitted.
The big issue, in addition to speed, I had with UBT was how difficult it was to debug when it did the wrong thing. Often this was when having to adopt new Xcode versions, where CMake gave a lot of escape hatches to adapt it whereas UBT required spelunking. At some points, there’s multiple layers of historic cruft that just seem arcane. Last year, epic released a video where an engineer went through it and even they h…
No disagreements there. Spelunking is a great word for it, but spelunking is a requirement for most "deep" unreal engine development. On the other hand, its incredibly empowering to switch your ide to build UnrealBuildTool, and put "My project Development Win64" as the arguments and be able to debug the build tool there and then to see what it's actually doing.
Re: Unity builds lurked into the Firefox Build System
#63(HTTP 301 on the old URL would have been appreciated)
Re: Unity builds lurked into the Firefox Build System
#64Earlier quoted context omitted.
> I hadn't considered it as a build speed optimization, though that seems somewhat obvious in hindsight. Some build systems like cmake already support unity builds, as this is a popular strategy to speed up builds. Nevertheless, if speed is the main concern them it's preferable to just use a build cache like ccache, and modularize a project appropriately.
Why not both? Also, does ccache work with MSVC?
Technically it works, but it requires some work. You need to pass off ccache's executable as the target compiler, and you need to configure the settings in all vsproj files to allow calls to the compiler to be cacheable, like disabling compilation batching.
Using cmake to generate make/ninja projects and use compilers other than msvc is far simpler and straight-forward: set two cmake vars and you're done.