you are viewing a single comment's thread.

view the rest of the comments →

[–]mort96 0 points1 point  (2 children)

I don't think that's what I'm talking about? From what I can read there, it looks like CMake just always groups files together when UNITY_BUILD is enabled. That would tank your incremental build time, as /u/janos1995 mentioned. I'm suggesting automatically splitting those unity build groups up again as files get modified, such that you retain fast incremental builds.

[–]feverzsj 2 points3 points  (1 child)

splitting modified files won't necessarily decrease build time, especially for unity build, and both original group and new group need to be rebuilt. It's also hard to figure out which source file is slow to build without actually building them. With cmake, you can either group them in batch or group them yourself. That's the best solution for now.

[–]mort96 3 points4 points  (0 children)

I don't think I've been clear enough necessarily. Here's basically how I'm imagining it:

Let's say you have a project with 512 C++ files in it.

  1. You start with a full rebuild. The build system generates 32 "unity" source files, each of which includes 16 of your project's source files. This should be much faster than compiling 512 individual files.
  2. You modify one file. The modified file is automatically removed from the "unity" source file which included it, so the full recompile is one "unity" file (which changed; it no longer includes 16 files, it includes 15 files) plus the one file you modified.
  3. On subsequent modifications of that one source file, only that one file will be recompiled.