Version française
Home     About     Download     Resources     Contact us    
Browse thread
[Caml-list] Building O'Caml projects properly.
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: proff@i...
Subject: Re: [Caml-list] Building O'Caml projects properly.
> I'm not very experienced with make, so I've been using Markus Mottl's 
> OcamlMakefile in my projects so far.  In one of my projects, I use source 
> files from two other small libraries I've written; at present, I just have a 
> whole lot of files in my SOURCES and a bunch of symlinks to the proper files 
> in the proper directories.  However, I'd really like to be able to improve 
> my build process, and I think a good way to do that is to isolate in 
> directories the other libraries I've written.

Just factor out the common code into a seperate directory and use
OcamlMakefile to create a library out of it, for example:

kosha$ ls -F
CVS/            OcamlMakefile   erlang/         prog/
Makefile        doc/            lib/            sql/

kosha$ cat Makefile
SUBDIRS= lib prog/smtp_test prog/kosha

.PHONY: all
all:
        for dir in $(SUBDIRS); do (cd $$dir && $(MAKE)); done

.PHONY: clean
clean:
        for dir in $(SUBDIRS); do (cd $$dir && $(MAKE) clean); done


kosha$ cd lib
kosha/lib$ cat Makefile
#Note the two targets library dependencies for "all:"
OCAMLMAKEFILE=../OcamlMakefile

SOURCES=utils.ml mylist.ml mylist_test.ml io.ml
RESULT=klib
THREADS=yes

all:    debug-code-library native-code-library

LIBS=unix str netstring

-include $(OCAMLMAKEFILE)


kosha$ cd prog/kosha
kosha/prog/kosha$ cat Makefile
#Note well the two {LIB,INC}DIRS lines, and "klib" on the LIBS line
OCAMLMAKEFILE=../../OcamlMakefile

ocamlnet=ocnMisc.ml tokenize.ml mailmessage.ml

LIBDIRS += ../../lib
INCDIRS += ../../lib

SOURCES=$(ocamlnet) opt.ml match.ml db.ml canary.ml mailtype.ml\
        spamdb.ml mail.ml esmtp_parser.mly esmtp_lexer.mll\
        smtp_server.ml main.ml

RESULT=kosha
THREADS=yes

LIBS=unix str dbm pq netstring threads klib

all: dc

-include $(OCAMLMAKEFILE)

--
 Julian Assange        |If you want to build a ship, don't drum up people
                       |together to collect wood or assign them tasks and
 proff@iq.org          |work, but rather teach them to long for the endless
 proff@gnu.ai.mit.edu  |immensity of the sea. -- Antoine de Saint Exupery
-------------------
Bug reports: http://caml.inria.fr/bin/caml-bugs  FAQ: http://caml.inria.fr/FAQ/
To unsubscribe, mail caml-list-request@inria.fr  Archives: http://caml.inria.fr