Gonzalo Garramuño wrote:
Andreas Pakulat wrote:
But exactly that is not supposed to happen.

Why not?  Maybe I was not clear:

cmake2.5 has a "MSYS Makefile" generator.

I did -G "MSYS Makefile" and I got an install on $PROGRAMFILES. That's not correct.

If I wanted to install in $PROGRAMFILES, there's NMake Makefiles or many of the other Windows specific generators.

MSYS Makefile should install on /usr/local. I already showed how you can relatively safely figure out where /usr/local is as a win32 path.



Sorry, but I still don't agree. I am not going to add code into CMake that translates POSIX's paths into windows paths. CMake is a native windows application, if you want to set your install prefix for your project to where ever you want, you can still do that in cmake.

Something like:

if(CMAKE_GENERATOR MATCHES "MSYS")
   SET(CMAKE_INSTALL_PREFIX  "/what/ever/you/want")
...

That is fine. But I am not going to add hackish code into CMake so that it can understand mount points and symlinks,

BTW both cygwin and msys have a ln to create symlinks:

$ ln --help
Usage: ln [OPTION]... [-T] TARGET LINK_NAME   (1st form)
  or:  ln [OPTION]... TARGET                  (2nd form)
  or:  ln [OPTION]... TARGET... DIRECTORY     (3rd form)
  or:  ln [OPTION]... -t DIRECTORY TARGET...  (4th form)
In the 1st form, create a link to TARGET with the name LINK_NAME.
In the 2nd form, create a link to TARGET in the current directory.
In the 3rd and 4th forms, create links to each TARGET in DIRECTORY.
Create hard links by default, symbolic links with --symbolic.
When creating hard links, each TARGET must exist.


Basically, you want a POSIXs path aware CMake, and to do that right you should link cmake to the msys run time library so that all the file operations like fopen and such know about mount points, symlinks and posix path stuff. I don't think a hack or table look up will work, you would have to make cmake completely aware of all the extra non windows path stuff that is in the msys run time. Because if the cmake installer went to write to /usr/local it would have to know what that was. You would have to change the many many locations where cmake opens a file and do the translation hack.

The only way I can see doing this is to link cmake to the msys run time library. As described here:

> However, the key here is that this MSYS environment is
>  just a driver for native Win32 tools such as the
>MinGW gcc which produces MinGW binaries. It is very rare
> and uncommon to actually use MSYS to build MSYS apps, and
>in fact to do this you have to install a special environment
> and use a specially modified copy of gcc -- currently a
> very old 2.95 version.

CMake would have to be a MSYS app to understand MSYS paths.

But hey CMake is open source, you can always add the code you want by yourself.

-Bill



_______________________________________________
CMake mailing list
[email protected]
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to