Fernando Cacciola wrote:
Hi Bill,
Fernando Cacciola wrote:
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.
Can you explain better what you are trying to do?
If you are going to use visual C++, then you can run cmake from a cygwin
shell and create nmake files no problem.
I do this all the time. What
is it that you want to do with cygwin from visual stuido C++?
We have a testing system that I haven't yet ported to CTest, etc...
which is heavily based on shell scripts.
To test against Visual C++ I run the testing script under cygwin, but
then I need to use the windows cmake binary since the cygwin version of
cmake doesn't generate NMakefiles (just ordinary makefiles)
It all works out of the box provided the enviroment is properly set for
the command line Visual C++, but I stumble upon a problem yesterday: one
of my users wanted to do "nmake install" and get the results under
/usr/local within cygwin (as the previous non-cmake build system was
doing).
It turned out that "/usr/local" is not a valid path for the windows
cmake binary (which runs outside cygwin) so I needed to add some code to
"fix" that path, but of course, only in that specific condition: windows
cmake under cygwin (so I added the posted code that defines
WIN32_CMAKE_ON_CYGWIN).
As I said in a couple of occasions I am porting an existing build system
so I have lots of requirements that are perhaps unnatural for CMake, but
which I need to satisfy nonetheless.
Best
OK, so basically, for your project you want to set the install prefix to
something other than the default. And, you need it to be able to use
cygwin paths. That should not be that hard.
Something like this should work:
# if we are on windows and not cygwin, and the
# install path starts with /usr, then run cygpath to
# to convert the cygwin style path back to a windows path
if(WIN32 AND NOT CYGWIN)
if("${CMAKE_INSTALL_PREFIX}" MATCHES "^/usr")
find_program(CYGPATH cygpath)
if(NOT CYGPATH)
message(FATAL_ERROR "Can't find cygpath but you have a cygwin
path as your install prefix")
# run cygpath to convert CMAKE_INSTALL_PREFIX
set(CMAKE_INSTALL_PREFIX thenewpath)
Be careful about having / in your final path and not \.
-Bill
_______________________________________________
CMake mailing list
CMake@cmake.org
http://www.cmake.org/mailman/listinfo/cmake