Browse thread
[Caml-list] camlp4 in script
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | Issac Trotts <ijtrotts@u...> |
| Subject: | Re: [Caml-list] camlp4 in script |
On Mon, Nov 03, 2003 at 05:06:00PM +0200, Artem Prisyznuk wrote:
> Hello,
>
> If I want call ocaml script from shell I type next header for
> this script:
>
> #!/usr/bin/ocamlrun /usr/bin/ocaml
>
> print_string "Hello\n";;
> .....
>
>
> But if I want use camlp4 for source of script, I try next source
>
> #!/usr/bin/ocamlrun /usr/bin/ocaml -I `camlp4 -where`
>
> #load "camlp4r.cma";
> print_string "Hello\n";
> .....
>
>
> When I try execute this script shell print next error:
>
> Fatal error: cannot find file /usr/bin/ocaml -I /usr/lib/ocaml/camlp4
>
> How I can execute script witch revised syntax?
It works if you make an executable that wraps the call to ocaml with the
desired arguments:
ijtrotts@beech:/tmp$ cat c4.ml
let () =
let includes = "-I /usr/lib/ocaml/camlp4" in
let args =
List.fold_left (^) "" (List.tl (Array.to_list Sys.argv))
in
let cmd =
Printf.sprintf "ocaml %s camlp4r.cma %s" includes args
in
match Sys.command cmd with
0 -> ()
| _ -> prerr_endline ("Couldn't run "^cmd)
ijtrotts@beech:/tmp$ ocamlopt -o c4 c4.ml
ijtrotts@beech:/tmp$ su
Password:
beech:/tmp# mv c4 /usr/local/bin/c4
ijtrotts@beech:/tmp$ cat foo.ml
#!/usr/local/bin/c4
print_string "Hello\n";
ijtrotts@beech:/tmp$ chmod +x foo.ml
ijtrotts@beech:/tmp$ ./foo.ml
Hello
-ijt
--
-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners