Version française
Home     About     Download     Resources     Contact us    

This site is updated infrequently. For up-to-date information, please visit the new OCaml website at

Browse thread
Re: [Caml-list] windows and C libs
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: 2007-06-21 (10:29)
From: David Allsopp <david.allsopp@m...>
Subject: Re: [Caml-list] windows and C libs
> On Thu, 21 Jun 2007, "Dmitry Bely" <> wrote:
> > 
> > On 6/20/07, Christophe TROESTLER <> wrote:
> > 
> > > WINDOWS USERS: Is there a consensus on windows on where the .lib and
> > > .dll should go?  If not, how about to decide that here so efforts to
> > > port libs to windows can set it as the default path.
> > 
> > Do you mean .lib/.dll files of some specific OCaml library? They
> > usually go to %OCAMLLIB% and  %OCAMLLIB%\stublibs respectively. What's
> > wrong with it?
> No, I mean C library files -- e.g. where should the C-pcre libraries
> (libpcre.lib, dllpcre.dll) go?
Same place? It's less well-defined under Windows because it's not a compiler
oriented OS... all the Microsoft Dev. Tools have their own special build
environments that set the relevant variables for where the libs are. AFAIK
there's no "correct" place for them.

> > > WIN32 OCAML: When I give a path -- say -cclib "C:\Documents and
> > > Settings\USER\Mes documents\lib\libx.lib" -- containing spaces (but
> > > quoted) to include into a library, it is not well quoted when on uses
> > > the library (to compile a program).  I tried "\"...\"" to  not avail.
> > > Is there a way around that or must it be considered like a bug?
> > 
> > An obvious workaround is to use the short name:
> > C:\Docume~1\USER\Mesdoc~1\lib\libx.lib
> Yes but it is not convenient because it is not returned by, say,
> %OCAMLLIB%.  Is there a command to transform a long name into a short
> one?  What about vista?
dir /x returns short names but, alas, it doesn't combine with /b to produce
what you're after. However, cygpath --dos does exactly what you need.
Incidentally, using %OCAMLLIB% is unreliable - 'ocamlc -where' is better as
that will return an answer even for an environment that hasn't defined
OCAMLLIB (which isn't mentioned as being necessary in INSTALL in the source

So, for me, the whole command becomes:
for /f "delims=" %F in ('ocamlc -where') do @c:\cygwin\bin\cygpath -d "%F"