[CMake] Cygwin GNU make vs. Nmake for a .net VXL build

Wheeler, Frederick W (GE, Research) wheeler at crd.ge.com
Wed Dec 6 12:50:02 EST 2006


CMake List:

I'm trying out using Cygwin GNU make to do a .net 2003 build of VXL
from the Cygwin bash command line.  It seems to take a lot longer than
NMake and
I'm wondering if anyone knows for sure why or has any kind of
solution.  Details below ...

Bill Hoffman recently wrote to the VXL Users list:
> 
> Also, if you are adventurous and like the command line....
> 
> You can use cmake to create makefiles for "Unix Makefiles", but set
> CXX and CC to cl.  Make sure cl command line environment is setup
> correctly.  Then you can use make -j3 to do the build.  Due to a bug
> in the cygwin make, you have to use this patched one:
> http://www.cmake.org/files/make.exe

I just took a crack at this, not to be able to build in parallel (w/
-j3), but to use GNU make instead of NMake from the cygwin command
line so I can hit ctrl-C and get the build to actually stop.  My
experience with NMake is that if I hit ctrl-C I get a prompt, but the
build continues in the background.

I'm using Windows 2000, MSVC .net 2003, recent cygwin, but with Cygwin
GNU make 3.80.  The most recent Cygwin supplied make (3.81) will not
work with CMake generated makefiles.

It works great, except that I'm finding that a VXL build with Cygwin
GNU make takes a lot longer than one with NMake.  With GNU make, my
initial build from scratch takes 197 min and a 2nd make run that does
nothing takes 15 min.  With NMake, the initial build from scratch
takes 83 min, and the 2nd make run takes 4 min.  The actual commands I
used are
below.  I wiped the build dir before running cmake in each case.

I guess this timing difference is due to the fact that make needs to
access a lot of files to check timestamps, and doing this through
the cygwin DLL, as Cygwin GNU make must, takes much longer than doing
it with direct Windows calls, as NMake does.  This would really hurt
any effort to use Cygwin GNU make to do parallel builds.  Does
anyone know whether MSYS make works better in this situation?

Fred Wheeler

CC=cl \
CXX=cl \
"/cygdrive/c/Program Files/CMake 2.4/bin/cmake" \
  -G"Unix Makefiles" \
  -DCMAKE_INSTALL_PREFIX:PATH="`cygpath -m $DEVTOP/vxl_usr_test`" \
  -DCMAKE_BUILD_TYPE:STRING=Release \
  -DCMAKE_VERBOSE_MAKEFILE:BOOL=OFF \
  -DBUILD_VGUI:BOOL=YES \
  -DWXWIDGETS_ROOT_DIR:PATH="`cygpath -m ~/dev/wxWidgets-2.6.3`" \
  "`cygpath -m $DEVTOP/vxl_src`"
time make -k # 197 min
time make -k # 15 min

"/cygdrive/c/Program Files/CMake 2.4/bin/cmake" \
  -G"NMake Makefiles" \
  -DCMAKE_INSTALL_PREFIX:PATH="`cygpath -m $DEVTOP/vxl_usr_test`" \
  -DCMAKE_BUILD_TYPE:STRING=Release \
  -DCMAKE_VERBOSE_MAKEFILE:BOOL=OFF \
  -DBUILD_VGUI:BOOL=YES \
  -DWXWIDGETS_ROOT_DIR:PATH="`cygpath -m ~/dev/wxWidgets-2.6.3`" \
  "`cygpath -m $DEVTOP/vxl_src`"
MAKEFLAGS=kie time nmake # 83 min
MAKEFLAGS=kie time nmake # 4 min

########################################################################
####


More information about the CMake mailing list