Am 09.11.2011 23:00, schrieb Stefan Monnier:
I'm trying to use cmake for a project using OCaml, so I'm trying to add
support for a new language.

Among the many problems I encounter, the most pressing is the
following: the rule to build object files (CMAKE_OCaml_COMPILE_OBJECT) seems to want a command that takes <SOURCE> and generates <OBJECT>, both
of which absolute file names.

Problems is, `ocamlc' seems to insist on sending the result to a file
name of its own choosing (basically <SOURCE> with the extension
modified).  Worse yet: it generates 2 files (a .cmo object file and
a .cmi that is similar to a header file).

The rule below "works":

set (CMAKE_OCaml_COMPILE_OBJECT
  "<CMAKE_OCaml_COMPILER> -c <SOURCE> \; mv \"$$(dirname
<SOURCE>)/$$(basename <OBJECT>)\" <OBJECT>")

but it's clearly not what we want.
- How do I tell Cmake that `ocamlc' generates 2 files?
- How do I tell Cmake that `ocamlc' does not let us choose where to put
  the result?

According to http://caml.inria.fr/pub/docs/manual-ocaml/manual022.html, it does:
-o exec-file
Specify the name of the output file produced by the compiler. The default output name is a.out under Unix and camlprog.exe under Windows. If the -a option is given, specify the name of the library produced. If the -pack option is given, specify the name of the packed object file produced. If the -output-obj option is given, specify the name of the output file produced. If the -c option is given, specify the name of the object file produced for the next source file that appears on the command line.

So using
set (CMAKE_OCaml_COMPILE_OBJECT "<CMAKE_OCaml_COMPILER> -c -o <OBJEJCT> <SOURCE>")

does not work?

HS

--

Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to