Hi People,

Due to some project specific constrains, I need to use cmake within cygwin but to compile using Visual C++ via nmake. Since the cygwin cmake doesn't support nmake I must use the windows cmake binary, but naturally knowing that I am running under cygwin.

I couldn't find any preset variable that could tell me this, so I'm using the follow code to that effect:

 if ( WIN32 )
   find_program(CMAKE_UNAME uname /bin /usr/bin /usr/local/bin )
   if(CMAKE_UNAME)
     exec_program(uname ARGS -s OUTPUT_VARIABLE CMAKE_SYSTEM_NAME2)
     if ( CMAKE_SYSTEM_NAME2 MATCHES "CYGWIN" )
message( STATUS "This is the Windows CMake running within the cygwin platform." ) set( WIN32_CMAKE_ON_CYGWIN TRUE CACHE INTERNAL "This is the cygwin platform." )
     endif()
   endif()
 endif()

Any crictisim is more than welcome at this point :)

I needed this new WIN32_CMAKE_ON_CYGWIN variable to correctly handle installation within the cygwin hierarchy.
The follwing code:

if ( WIN32_CMAKE_ON_CYGWIN )
exec_program(cygpath ARGS -w ${CMAKE_INSTALL_PREFIX} OUTPUT_VARIABLE CMAKE_INSTALL_PREFIX2 )
 file ( TO_CMAKE_PATH ${CMAKE_INSTALL_PREFIX2} CMAKE_INSTALL_PREFIX )
endif()

Allows my users to set the install prefix either as -DCMAKE_INSTALL_PREFIX=/usr/local or -DCMAKE_INSTALL_PREFIX=C:\MyLibraries\ProjectXYZ.

(NOTE: In Vista the default %PROGRAMFILES% prefix doesn't really work because of access restrictions which I couldn't get cygwin it to have.)


FYI, that transformation turns "/usr/local" into "C:/cygwin/usr/local", which I found to be needed by the windows cmake binary as it uses low-level FILE( INSTALL ) commands to do the actual installation when "nmake install" is executed.

Best


--
Fernando Cacciola
SciSoft
http://fcacciola.50webs.com
http://groups.google.com/group/cppba



_______________________________________________
CMake mailing list
CMake@cmake.org
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to