[CMake] CMake2.5 - wrong default install location for mingw
Gonzalo Garramuño
ggarra at advancedsl.com.ar
Sat Oct 20 05:08:34 EDT 2007
Bill Hoffman wrote:
>
> Not really true, cygwin has its own symlinks. See here:
> http://www.cygwin.com/cygwin-ug-net/using.html
That's not a symlink. That's a mount point.
And it does not effect anything I said. Just try putting such a mount
point on PATH (which is special). It will get translated automatically
whenever you call a DOS or windows app to an actual UNC or DOS path.
>
> Also see here:
>
>
http://www.mingw.org/MinGWiki/index.php/Shells%2C%20terminals%20and%20MSYS
>
Again, no contradiction to what I said. cmake must run from one top
shell or console, regardless of how many are nested. That's the one you
look as reference.
That's why I said looking at the envvar is a hack, while doing it with
win32api is the proper way.
>
> So, even if you figured out what shell you were running from, you
still could not write to /usr/local because that directory does not
exist to a windows program.
>
No. Did you read what I wrote?
Here's some code which may be easier. I have MSYS and a standalone Ruby
NOT compiled for msys.
$ cat /etc/fstab
c:/msys/1.0/mingw /mingw
c:/ActiveState/perl /perl
$ echo $PATH
/usr/local/bin:/mingw/bin:/bin:/perl
# here i print path from ruby
$ /C/ruby/bin/ruby.exe -e "puts ENV['PATH']"
C:\msys\1.0\local\bin;c:\msys\1.0\mingw\bin;C:\msys\1.0\bin;c:\ActiveState\perl
# here I find sh.exe in path
$ /C/ruby/bin/ruby.exe -e "puts ENV['PATH'].split(';').find {|dir|
File.exists?( dir + '/sh.exe' ) }"
C:\msys\1.0\bin
# here I get /usr/local
$ /C/ruby/bin/ruby.exe -e "puts ENV['PATH'].split(';').find {|dir|
File.exists?( dir + '/sh.exe' ) } + '../local'"
C:\msys\1.0\bin\..\local
Explanation:
Find 'sh.exe' in $PATH. PATH already has a DOS or UNC path from the
MSYS/CYGWIN paths, regardless of how many mount points or 'symlinks'
msys or cygwin uses.
From it, you have /usr/local by doing ../local ( or just .. if sh.exe
happens to weirdly be in (ROOT)/local/bin which you can know from the
word local in it). Under any Unix (Linux) layer, sh.exe is not supposed
to be installed ANYWHERE else and must exist in some form.
MSYS and CYGWIN *MUST* translate PATH to a windows equivalent or else
child programs would not work correctly. Other vars, like
LD_LIBRARY_PATH don't get this special treatment.
--
Gonzalo Garramuño
ggarra at advancedsl.com.ar
AMD4400 - ASUS48N-E
GeForce7300GT
Kubuntu Edgy
More information about the CMake
mailing list