Включите комплект батарей в make-файл для Ocaml - PullRequest
2 голосов
/ 02 декабря 2011

Я хотел бы использовать функции модуля List батарей Ocaml .Я установил батарейки, и тривиальный код из Начало работы работает с ocamlfind ocamlc -package batteries -linkpkg euler001.ml -o euler001.

Теперь, возвращаясь к моему проекту, у меня есть makefile следующим образом:

CMO=sib_lexer.cmo sib_parser.cmo sib_pp.cmo lattices.cmo abstract_interpreter.cmo main.cmo
GENERATED = sib_lexer.ml sib_parser.ml sib_parser.mli
BIN=Simpler-Basic
FLAGS= -g -annot

all: $(BIN)
    export OCAMLRUNPARAM=b
    ./$(BIN) test.sib -a zone

$(BIN):$(CMO)
    ocamlc $(FLAGS) -o $(BIN) graphics.cma $(CMO)

.SUFFIXES: .mli .ml .cmi .cmo .mll .mly

.mli.cmi:
    ocamlc $(FLAGS) -c $<

.ml.cmo:
    ocamlc $(FLAGS) -c $<

.mll.ml:
    ocamllex $<

.mly.ml:
    menhir -v $<

.mly.mli:
    ocamlyacc -v $<

clean:
    rm -f *.cm[io] *.o *~ $(BIN) $(GENERATED) sib_parser.output

.depend depend:$(GENERATED)
    rm -f .depend #3
    ocamldep *.ml *.mli > .depend #4

include .depend

Я пытался заменить все ocamlc $(FLAGS) на ocamlfind ocamlc -package batteries -linkpkg $(FLAGS), но это не сработало ...

Может кто-нибудь сказать мне, как изменить makefile, чтобы он соответствовал batteries

1 Ответ

1 голос
/ 03 декабря 2011

Изменение команды компиляции недостаточно. Вы должны добавить, например, open Batteries_uni в начале файлов, где вы хотите использовать список батарей.

...