[CMake] windows nmake build performance (specifically checking for built targets)

Brad King brad.king at kitware.com
Tue Nov 10 13:36:30 EST 2009


Kevin Burge wrote:
> I have many built targets.  When I do "nmake install"

FYI, you can skip the up-to-date check before install by using

  nmake install\fast

> it takes a long
> time between each "Built target..." check (extremely long, compared to
> using make on a Unix box).  Is there any way to speed this up?

In general the Windows filesystem is not good at dealing with large
numbers of small files...exactly what happens during a build.  We've
regularly seen 10x speed differences in your situation.

> It's particularly slow on built C++ targets.  It can take between
> 2-5 seconds before it moves to the next target.

Does this happen every time if you do it more than once in a row
(cold v. warm cache)?

> cmake280rc5 on the same hardware smokes the paints off of nmake "Built
> target" messages.

Do you mean that rc5 on Linux beats rc5 on Windows?

> Linux: 5 seconds to show all built targets
> Windows: 61 seconds to show all built targets.

Look for depend.internal files in the build tree.  These files list
all the dependencies for each object file.  How many deps per object
do you see?

Also, try

  set VERBOSE=1
  nmake

to see if CMake prints any verbose dependency check info.  IIRC
it only prints something when it decides a file is out of date,
but it won't hurt to try.

-Brad


More information about the CMake mailing list