install Ocamlgraph on window?
Anyone know how to install Ocamlgraph library on Window? I am using Ocaml install on Mingw por开发者_C百科t. Can't figure a way to do this?
On Windows, it is a little bit tricky. However, it is still possible to compile ocamlgraph on windows.
To do this, you need to edit the file "Makefile.in" by replacing all the attribute strings i.e. strings of form @...@ like @OCAMLC@, @OCAMLOPT@, ... In UNIX, the configuration script only do this automatically for you. On Windows, it is quite inconvenient that you need to do this manually. There are other things to change: all the UNIX commands. Replace "rm -f" ==> "del"; "cp" ==> "copy"; etc.
Install GNU make and then you can compile ocamlgraph. After that, copy the graph.*
in the main folder to the "lib" folder of your Ocaml installation. Make a new folder ocamlgraph
in lib
and copy all the files *.mli
in ./src/
there. You are done!
I include my "Makefile" for your reference.
##########################################################################
# #
# Ocamlgraph: a generic graph library for OCaml #
# Copyright (C) 2004-2010 #
# Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles #
# #
# This software is free software; you can redistribute it and/or #
# modify it under the te$(RM)s of the GNU Library General Public #
# License version 2.1, with the special exception on linking #
# described in file LICENSE. #
# #
# This software is distributed in the hope that it will be useful, #
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. #
# #
##########################################################################
# Where to install the binaries
DESTDIR =
prefix =
exec_prefix=${prefix}
datarootdir=${prefix}/share
BINDIR =$(DESTDIR)${exec_prefix}/bin
# Where to install the man page
MANDIR=${datarootdir}/man
# Other variables set by ./configure
OCAMLC = ocamlc.opt
OCAMLOPT = ocamlopt.opt
OCAMLDEP = ocamldep -slash
OCAMLDOC = ocamldoc.opt
OCAMLLEX = ocamllex.opt
OCAMLYACC= ocamlyacc
OCAMLLIB = "C:\Program Files\Objective Caml\lib"
OCAMLBEST= opt
OCAMLVERSION = 3.11.0
OCAMLWEB = ocamlweb
OCAMLWIN32 = yes
OCAMLFIND = ocamlfind
RM = del
EXE =
LIBEXT = .lib
OBJEXT = .obj
# Others global variables
SRCDIR = src
LIBDIR = lib
INCLUDES= -I $(SRCDIR) -I $(LIBDIR) -I $(OCAMLLIB)
BFLAGS = $(INCLUDES) -g -dtypes
OFLAGS = $(INCLUDES)
# main target
#############
NAME=ocamlgraph
ifeq (no,yes)
all: byte $(OCAMLBEST) viewer dgraph editor
else
all: byte $(OCAMLBEST)
endif
# bytecode and native-code compilation
######################################
LIB= unionfind heap bitv
LIB:=$(patsubst %, $(LIBDIR)/%.cmo, $(LIB))
CMO = version util blocks persistent imperative \
delaunay builder classic rand oper \
path traverse coloring topological components kruskal flow \
graphviz gml dot_parser dot_lexer dot pack \
gmap minsep cliquetree mcs_m md strat
CMO := $(LIB) $(patsubst %, $(SRCDIR)/%.cmo, $(CMO))
CMX = $(CMO:.cmo=.cmx)
CMA = graph.cma
CMXA = graph.cmxa
CMI = sig sig_pack dot_ast
CMI := $(patsubst %, src/%.cmi, $(CMI))
GENERATED = META \
src/gml.ml src/version.ml \
src/dot_parser.ml src/dot_parser.mli src/dot_lexer.ml
$(CMX): OFLAGS += -for-pack Graph
byte: $(CMA)
opt: $(CMXA)
graph.cma: graph.cmo
$(OCAMLC) $(INCLUDES) -a -o $@ $^
graph.cmxa: graph.cmx
$(OCAMLOPT) $(INCLUDES) -a -o $@ $^
graph.cmi: graph.cmo
graph.o: graph.cmx
graph.cmo: $(CMI) $(CMO)
$(OCAMLC) $(INCLUDES) -pack -o $@ $^
graph.cmx: $(CMI) $(CMX)
$(OCAMLOPT) $(INCLUDES) -pack -o $@ $^
VERSION=1.7
#./src/version.ml: Makefile
# $(RM) $@
# echo "let version = \""$(VERSION)"\"" > $@
# echo "let date = \""`date`"\"" >> $@
# gtk2 graph editor
###################
ED_DIR=editor
editor: $(ED_DIR)/editor.byte $(ED_DIR)/editor.$(OCAMLBEST)
ED_CMO = ed_hyper ed_graph ed_draw ed_display ed_main
ED_CMO:= $(patsubst %, $(ED_DIR)/%.cmo, $(ED_CMO))
ED_CMX = $(ED_CMO:.cmo=.cmx)
ED_CMI = $(ED_CMO:.cmo=.cmi)
ED_INCLUDES = -I +lablgtk2 -I +threads -I $(ED_DIR) $(INCLUDES) -I .
$(ED_CMI) $(ED_CMO): BFLAGS+= $(ED_INCLUDES)
$(ED_CMI) $(ED_CMO): $(CMA)
$(ED_CMX): OFLAGS+= $(ED_INCLUDES)
$(ED_CMX): $(CMXA)
$(ED_DIR)/editor.byte: $(CMA) $(ED_CMO)
$(OCAMLC) -g -o $@ $(ED_INCLUDES) \
lablgtk.cma lablgnomecanvas.cma unix.cma $^
$(ED_DIR)/editor.opt: $(CMXA) $(ED_CMX)
$(OCAMLOPT) -o $@ $(ED_INCLUDES) \
lablgtk.cmxa lablgnomecanvas.cmxa unix.cmxa $^
# gtk2 graph viewer (deprecated)
###################
VIEWER_DIR=view_graph
viewer: $(VIEWER_DIR)/viewgraph.byte $(VIEWER_DIR)/viewgraph.$(OCAMLBEST)
VIEWER_CMO=viewGraph_core viewGraph_select viewGraph_utils viewGraph_test
VIEWER_CMO:=$(patsubst %,$(VIEWER_DIR)/%.cmo, $(VIEWER_CMO))
VIEWER_CMX=$(VIEWER_CMO:.cmo=.cmx)
VIEWER_CMI=$(VIEWER_CMO:.cmo=.cmi)
VIEWER_MLI=$(VIEWER_CMI:.cmi=.mli)
VIEWER_INCLUDES= -I +lablgtk2 -I $(VIEWER_DIR) $(INCLUDES) -I .
$(VIEWER_CMI) $(VIEWER_CMO): BFLAGS+= $(VIEWER_INCLUDES)
$(VIEWER_CMX): OFLAGS+= $(VIEWER_INCLUDES) -for-pack Viewgraph
$(VIEWER_CMI) $(VIEWER_CMO): $(CMA)
$(VIEWER_CMX): $(CMXA)
VIEWER_CMOLIB = $(VIEWER_DIR)/viewgraph.cmo
VIEWER_CMILIB = $(VIEWER_DIR)/viewgraph.cmi
VIEWER_CMXLIB = $(VIEWER_DIR)/viewgraph.cmx
$(VIEWER_CMOLIB): $(filter-out $(VIEWER_DIR)/viewGraph_test.cmo, $(VIEWER_CMO))
$(OCAMLC) -o $@ $(VIEWER_INCLUDES) -pack $^
$(VIEWER_CMXLIB): $(filter-out $(VIEWER_DIR)/viewGraph_test.cmx, $(VIEWER_CMX))
$(OCAMLOPT) -o $@ $(VIEWER_INCLUDES) -pack $^
$(VIEWER_DIR)/viewgraph.byte: $(CMA) $(VIEWER_CMOLIB)
$(OCAMLC) -g -o $@ $(VIEWER_INCLUDES) \
lablgtk.cma gtkInit.cmo lablgnomecanvas.cma unix.cma $^
$(VIEWER_DIR)/viewgraph.opt: $(CMXA) $(VIEWER_CMXLIB)
$(OCAMLOPT) -o $@ $(VIEWER_INCLUDES) \
lablgtk.cmxa gtkInit.cmx lablgnomecanvas.cmxa unix.cmxa $^
# new gtk2 graph viewer: dgraph
###############################
DGRAPH_DIR=dgraph
dgraph: $(DGRAPH_DIR)/dgraph.byte $(DGRAPH_DIR)/dgraph.$(OCAMLBEST)
DGRAPH_CMO=xDotDraw xDot \
dGraphModel \
dGraphTreeLayout dGraphSubTree dGraphTreeModel \
dGraphViewItem dGraphView \
dGraphRandModel dGraphContainer \
dGraphViewer
DGRAPH_CMO:=$(patsubst %,$(DGRAPH_DIR)/%.cmo, $(DGRAPH_CMO))
DGRAPH_CMX=$(DGRAPH_CMO:.cmo=.cmx)
DGRAPH_CMI=$(filter-out dgraph/dGraphViewer.cmi, $(DGRAPH_CMO:.cmo=.cmi))
DGRAPH_INCLUDES= -I +lablgtk2 -I $(DGRAPH_DIR) $(INCLUDES) -I .
$(DGRAPH_CMI) $(DGRAPH_CMO): BFLAGS+= $(DGRAPH_INCLUDES)
$(DGRAPH_CMX): OFLAGS+= $(DGRAPH_INCLUDES) -for-pack Dgraph
$(DGRAPH_CMI) $(DGRAPH_CMO): $(CMA)
$(DGRAPH_CMX): $(CMXA)
DGRAPH_CMOLIB = $(DGRAPH_DIR)/dgraph.cmo
DGRAPH_CMILIB = $(DGRAPH_DIR)/dgraph.cmi
DGRAPH_CMXLIB = $(DGRAPH_DIR)/dgraph.cmx
dgraph/dGraphViewer.cmo: $(DGRAPH_CMOLIB)
dgraph/dGraphViewer.cmx: $(DGRAPH_CMXLIB)
$(DGRAPH_CMOLIB): $(filter-out dgraph/dGraphViewer.cmo, $(DGRAPH_CMO))
$(OCAMLC) -o $@ $(DGRAPH_INCLUDES) -pack $^
$(DGRAPH_CMXLIB): $(filter-out dgraph/dGraphViewer.cmx, $(DGRAPH_CMX))
$(OCAMLOPT) -o $@ $(DGRAPH_INCLUDES) -pack $^
$(DGRAPH_DIR)/dgraph.byte: $(CMA) $(DGRAPH_CMOLIB) \
$(DGRAPH_DIR)/dGraphViewer.cmo
$(OCAMLC) -g -o $@ $(DGRAPH_INCLUDES) \
lablgtk.cma gtkInit.cmo lablgnomecanvas.cma $^
$(DGRAPH_DIR)/dgraph.opt: $(CMXA) $(DGRAPH_CMXLIB) \
$(DGRAPH_DIR)/dGraphViewer.cmx
$(OCAMLOPT) -o $@ $(DGRAPH_INCLUDES) \
lablgtk.cmxa gtkInit.cmx lablgnomecanvas.cmxa $^
# Examples
##########
EXAMPLESBIN=bin/demo.$(OCAMLBEST) bin/demo_planar.$(OCAMLBEST) \
bin/bench.$(OCAMLBEST) bin/color.$(OCAMLBEST) bin/sudoku.$(OCAMLBEST) \
bin/test.$(OCAMLBEST)
.PHONY: examples
examples: $(EXAMPLESBIN)
.PHONY: demo
demo: bin/demo.$(OCAMLBEST)
bin/demo.byte: $(CMA) examples/demo.cmo
$(OCAMLC) -o $@ $^
bin/demo.opt: $(CMXA) examples/demo.cmx
$(OCAMLOPT) -o $@ $^
bin/demo_planar.byte: $(CMA) examples/demo_planar.cmo
$(OCAMLC) -o $@ graphics.cma unix.cma $^
bin/demo_planar.opt: $(CMXA) examples/demo_planar.cmx
$(OCAMLOPT) -o $@ graphics.cmxa unix.cmxa $^
bin/color.byte: $(CMA) examples/color.cmo
$(OCAMLC) -o $@ graphics.cma unix.cma $^
bin/color.opt: $(CMXA) examples/color.cmx
$(OCAMLOPT) -o $@ graphics.cmxa unix.cmxa $^
bin/sudoku.byte: $(CMA) examples/sudoku.cmo
$(OCAMLC) -o $@ graphics.cma unix.cma $^
bin/sudoku.opt: $(CMXA) examples/sudoku.cmx
$(OCAMLOPT) -o $@ graphics.cmxa unix.cmxa $^
test: $(CMA) tests/test.ml
ocaml unix.cma graphics.cma $^
bin/test.byte: $(CMA) tests/test.cmo
$(OCAMLC) -g -unsafe -o $@ unix.cma graphics.cma $^
bin/test.opt: $(CMXA) tests/test.cmx
$(OCAMLOPT) -unsafe -inline 100 -o $@ unix.cmxa graphics.cmxa $^
bench: bin/bench.$(OCAMLBEST)
bin/bench.opt
bin/bench.opt: $(CMXA) tests/bench.ml
$(OCAMLOPT) -unsafe -inline 100 -o $@ unix.cmxa $^
check: $(CMA) tests/check.ml
ocaml $^
# Additional rules
##################
EXAMPLES = demo color demo_planar sudoku
EXAMPLESBIN:=$(patsubst %, bin/%.opt, $(EXAMPLES))
EXAMPLES:= $(patsubst %, examples/%.ml, $(EXAMPLES))
examples: $(EXAMPLESBIN)
TESTS = test check
TESTS := $(patsubst %, tests/%.ml, $(TESTS))
DPD_GRAPH_ML= $(TESTS) $(EXAMPLES)
$(DPD_GRAPH_ML:.ml=.cmo): $(CMA)
$(DPD_GRAPH_ML:.ml=.cmx): $(CMXA)
# installation
##############
INSTALL_LIBDIR=$(DESTDIR)$(OCAMLLIB)/ocamlgraph
install: install-$(OCAMLBEST) install-byte
mkdir -p $(BINDIR)
ifeq (no,yes)
ifeq ($(OCAMLBEST),byte)
cp -f $(BINDIR)/graph-editor.byte $(BINDIR)/graph-editor$(EXE)
cp -f $(BINDIR)/graph-viewer.byte $(BINDIR)/graph-viewer$(EXE)
else
cp -f $(BINDIR)/graph-editor.opt $(BINDIR)/graph-editor$(EXE)
cp -f $(BINDIR)/graph-viewer.opt $(BINDIR)/graph-viewer$(EXE)
endif
endif
install-byte:
mkdir -p $(INSTALL_LIBDIR)
cp -f graph.cmo graph.cmi $(CMA) $(INSTALL_LIBDIR)
cp -f $(SRCDIR)/*.mli $(INSTALL_LIBDIR)
ifeq (no,yes)
mkdir -p $(BINDIR)
cp -f $(ED_DIR)/editor.byte $(BINDIR)/graph-editor.byte
cp -f $(VIEWER_CMILIB) $(VIEWER_CMOLIB) $(INSTALL_LIBDIR)
cp -f $(DGRAPH_CMILIB) $(DGRAPH_CMOLIB) $(INSTALL_LIBDIR)
cp -f $(VIEWER_DIR)/*.mli $(DGRAPH_DIR)/*.mli $(INSTALL_LIBDIR)
cp -f $(DGRAPH_DIR)/dgraph.byte $(BINDIR)/graph-viewer.byte
endif
install-opt: install-byte
mkdir -p $(INSTALL_LIBDIR)
cp -f graph$(LIBEXT) graph.cmi graph.cmx $(CMXA) $(INSTALL_LIBDIR)
cp -f $(SRCDIR)/*.mli $(INSTALL_LIBDIR)
ifeq (no,yes)
mkdir -p $(BINDIR)
cp -f $(ED_DIR)/editor.opt $(BINDIR)/graph-editor.opt
cp -f $(VIEWER_CMILIB) $(VIEWER_CMXLIB) $(VIEWER_CMXLIB:.cmx=.o) \
$(INSTALL_LIBDIR)
cp -f $(DGRAPH_CMILIB) $(DGRAPH_CMXLIB) $(DGRAPH_CMXLIB:.cmx=.o) \
$(INSTALL_LIBDIR)
cp -f $(DGRAPH_DIR)/dgraph.opt $(BINDIR)/graph-viewer.opt
cp -f $(VIEWER_DIR)/*.mli $(DGRAPH_DIR)/*.mli $(INSTALL_LIBDIR)
endif
install-findlib: META
ifdef OCAMLFIND
ifeq (no,yes)
$(OCAMLFIND) install ocamlgraph META \
$(SRCDIR)/*.mli $(VIEWER_DIR)/*.mli $(DGRAPH_DIR)/*.mli \
graph$(LIBEXT) graph.cmx graph.cmo graph.cmi $(CMA) $(CMXA) \
$(VIEWER_CMXLIB) $(VIEWER_CMOLIB) $(DGRAPH_CMX) $(DGRAPH_CMO)
else
$(OCAMLFIND) install ocamlgraph META \
$(SRCDIR)/*.mli $(VIEWER_DIR)/*.mli $(DGRAPH_DIR)/*.mli \
graph$(LIBEXT) graph.cmx graph.cmo graph.cmi $(CMA) $(CMXA)
endif
endif
#META: META.in Makefile
# sed -e s/VERSION/$(VERSION)/ -e s/CMA/$(CMA)/ -e s/CMXA/$(CMXA)/ \
# $@.in > $@
# documentation
###############
DOCFILES=$(NAME).ps $(NAME).html
NODOC = blocks dot_parser dot_lexer version
NODOC := $(patsubst %, $(SRCDIR)/%.cmo, $(NODOC))
DOC_CMO = $(filter-out $(NODOC) $(LIB), $(CMO))
DOC_SRC = $(CMI:.cmi=.mli) $(DOC_CMO:.cmo=.mli) $(DOC_CMO:.cmo=.ml)
ifeq (no,yes)
DOC_SRC := $(DOC_SRC) $(DGRAPH_CMI:.cmi=.mli)
endif
.PHONY: doc
doc: $(DOC_CMO)
mkdir -p doc
$(RM) -f doc/*
$(OCAMLDOC) -d doc -html $(DGRAPH_INCLUDES) $(DOC_SRC)
# literate programming
$(NAME).tex: $(DOC_SRC)
$(OCAMLWEB) -o $@ $^
wc:
ocamlwc -p $(SRCDIRC)/*.mli $(SRCDIRC)/*.ml
# file headers
##############
headers:
headache \
-c misc/headache_config.txt \
-h misc/header.txt \
Makefile.in configure.in README \
$(LIBDIR)/*.ml $(LIBDIR)/*.ml[ily] \
$(SRCDIR)/*.ml $(SRCDIR)/*.ml[ily] \
$(ED_DIR)/*.ml $(ED_DIR)/*.mli
headache \
-c misc/headache_config.txt \
-h $(DGRAPH_DIR)/headers/CEA_LGPL \
$(DGRAPH_DIR)/*.ml $(DGRAPH_DIR)/*.mli
# export
########
EXPORTDIR=$(NAME)-$(VERSION)
TAR=$(EXPORTDIR).tar
FTP = /users/www-perso/projets/ocamlgraph/download
WWW = /users/www-perso/projets/ocamlgraph
FILES = src/*.ml* lib/*.ml* Makefile.in configure configure.in META.in \
.depend editor/ed_*.ml* editor/Makefile \
editor/tests/*.dot editor/tests/*.gml \
view_graph/*.ml view_graph/*.mli \
view_graph/README view_graph/Makefile \
dgraph/*.ml dgraph/*.mli \
examples/*.ml tests/*.ml \
README FAQ CREDITS INSTALL COPYING LICENSE CHANGES
export: source export-doc export-web export-delaunay
source:
mkdir -p export
cd export; $(RM) -rf $(EXPORTDIR)
mkdir -p export/$(EXPORTDIR)/bin
cp --parents $(FILES) export/$(EXPORTDIR)
cd export ; tar cf $(TAR) $(EXPORTDIR) ; gzip -f --best $(TAR)
cp export/$(TAR).gz $(FTP)
cp README FAQ CREDITS COPYING LICENSE CHANGES $(EXAMPLES) $(FTP)
# Build and install the .tar.gz requiered by Frama-C
framac: EXPORTDIR=ocamlgraph
framac: FTP=$$HOME/frama-c
framac:
mkdir -p export
cd export; $(RM) -rf $(EXPORTDIR)
mkdir -p export/$(EXPORTDIR)/bin
cp --parents $(FILES) export/$(EXPORTDIR)
cd export ; tar cf $(TAR) $(EXPORTDIR) ; gzip -f --best $(TAR)
cp export/$(TAR).gz $(FTP)
make -C $(FTP) force-ocamlgraph
www/version.prehtml: Makefile.in
echo "<#def version>$(VERSION)</#def>" > www/version.prehtml
export-web: www/version.prehtml
make -C www install
export-doc: $(DOC_CMO)
$(RM) -f $(WWW)/doc/*
-$(OCAMLDOC) -d $(WWW)/doc -html $(DGRAPH_INCLUDES) $(DOC_SRC)
MISCFTP = $(HOME)/WWW/ftp/ocaml/misc
DELAUNAY=delaunay.ml delaunay.mli
export-delaunay:
cd src; cp -f $(DELAUNAY) $(MISCFTP)
cd src; caml2html -noannot -d $(MISCFTP) $(DELAUNAY)
# generic rules
###############
.SUFFIXES: .mli .ml .cmi .cmo .cmx .mll .mly .tex .dvi .ps .html
.mli.cmi:
$(OCAMLC) -c $(BFLAGS) $<
.ml.cmo:
$(OCAMLC) -c $(BFLAGS) $<
.ml.o:
$(OCAMLOPT) -c $(OFLAGS) $<
.ml.cmx:
$(OCAMLOPT) -c $(OFLAGS) $<
.mll.ml:
$(OCAMLLEX) $<
.mly.ml:
$(OCAMLYACC) -v $<
.mly.mli:
$(OCAMLYACC) -v $<
.tex.dvi:
latex $< && latex $<
.dvi.ps:
dvips $< -o $@
.tex.html:
hevea $<
# Emacs tags
############
otags:
otags -r src editor view_graph
tags:
find . -name "*.ml*" | sort -r | xargs \
etags "--regex=/let[ \t]+\([^ \t]+\)/\1/" \
"--regex=/let[ \t]+rec[ \t]+\([^ \t]+\)/\1/" \
"--regex=/and[ \t]+\([^ \t]+\)/\1/" \
"--regex=/type[ \t]+\([^ \t]+\)/\1/" \
"--regex=/exception[ \t]+\([^ \t]+\)/\1/" \
"--regex=/val[ \t]+\([^ \t]+\)/\1/" \
"--regex=/module[ \t]+\([^ \t]+\)/\1/"
# Makefile is rebuilt whenever Makefile.in or configure.in is modified
######################################################################
#Makefile: Makefile.in config.status
Makefile: Makefile.in
if test -e $@; then chmod a+w $@; fi
chmod a-w $@
#config.status: configure
# ./config.status --recheck
#configure: configure.in
# autoconf
# clean
#######
clean:
$(RM) -f *~
for d in $(SRCDIR) $(LIBDIR) $(ED_DIR) $(VIEWER_DIR) $(DGRAPH_DIR) \
tests examples; \
do \
$(RM) -f $$d/*.cm[iox] $$d/*$(OBJEXT) $$d/*~ $$d/*.annot; \
done
$(RM) -f $(GENERATED) $(SRCDIR)/dot_parser.output
$(RM) -f graph.*a graph.cm* graph.o graph$(LIBEXT)
$(RM) -f $(ED_DIR)/editor.byte $(ED_DIR)/editor.opt
$(RM) -f $(VIEWER_DIR)/viewgraph.byte $(VIEWER_DIR)/viewgraph.opt
$(RM) -f $(DGRAPH_DIR)/dgraph.byte $(DGRAPH_DIR)/dgraph.opt
$(RM) -f $(DGRAPH_DIR)/dgraph
$(RM) -f *.haux *.aux *.log $(NAME).tex $(NAME).dvi $(DOCFILES)
$(RM) -f $(EXAMPLESBIN)
dist-clean distclean:: clean
$(RM) -f Makefile config.cache config.log *.byte *.opt #config.status
svnclean svn-clean:: dist-clean
$(RM) -f config.* configure configure.lineno
# depend
########
.PHONY: depend
.depend depend: $(GENERATED)
$(RM) -f .depend
$(OCAMLDEP) $(INCLUDES) -I $(ED_DIR) -I $(VIEWER_DIR) -I $(DGRAPH_DIR)\
$(LIBDIR)/*.ml $(LIBDIR)/*.mli \
$(SRCDIR)/*.ml $(SRCDIR)/*.mli \
$(ED_DIR)/*.mli $(ED_DIR)/*.ml \
$(VIEWER_DIR)/*.mli $(VIEWER_DIR)/*.ml \
$(DGRAPH_DIR)/*.mli $(DGRAPH_DIR)/*.ml > .depend
include .depend
I know. Read INSTALL
and follow it (Except that for ocaml/mingw the install-findlib target is broken, solution - after ./configure edit Makefile and change LIBEXT=.lib to LIBEXT=.a). Or maybe try desribing your problem in more detail than "IT DUSNNT WORK!!11".
I would recommend using GODI to manage your OCaml install. It supports the MingW32 OCaml and contains a build recipe for OCamlGraph.
精彩评论