Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
ocamlfind(1)		    General Commands Manual		  ocamlfind(1)

NAME
       ocamlfind - [Command-line interface of the Package manager]

SYNOPSIS
	      ocamlfind	query [-help | other options] package_name ...
	  or: ocamlfind	ocamlc [-help |	other options] file ...
	  or: ocamlfind	ocamlcp	[-help | other options]	file ...
	  or: ocamlfind	ocamlmktop [-help | other options] file	...
	  or: ocamlfind	ocamlopt [-help	| other	options] file ...
	  or: ocamlfind	ocamldoc [-help	| other	options] file ...
	  or: ocamlfind	ocamldep [-help	| other	options] file ...
	  or: ocamlfind	ocamlmklib [-help | other options] file	...
	  or: ocamlfind	ocamlbrowser [-help | other options]
	  or: ocamlfind	install	[-help | other options]	package_name file ...
	  or: ocamlfind	remove [-help |	other options] package_name
	  or: ocamlfind	lint META
	  or: ocamlfind	list [-describe]
	  or: ocamlfind	printppx [-help	| other	options] package_name ...
	  or: ocamlfind	printconf [ variable ]
	  or: ocamlfind	package/command	arg ...

       Optional	toolchain selection by:
	 ocamlfind -toolchain name ...

THE 'query' SUBCOMMAND
   Synopsis
       ocamlfind query [ -predicates p	|
			 -format f |
			 -long-format |	-l |
			 -i-format |
			 -l-format |
			 -a-format |
			 -o-format |
			 -p-format |
			 -prefix p |
			 -separator s |
			 -suffix s |
			 -pp |
			 -descendants |	-d |
			 -recursive  | -r
			 -qe | -qo] package ...

   Description
       This  command  looks packages up, sorts them optionally,	and prints at-
       tributes	of them. If the	option -recursive (short: -r)  is  not	speci-
       fied,  exactly the packages given on the	command	line are looked	up; if
       -recursive is present, the packages and all their ancestors, or if -de-
       scendants (short: -d)  is  present,  too,  all  their  descendants  are
       printed.

       Package	lookup and the selection of the	attributes of the packages can
       be modified by specifying predicates; without a -predicates option  the
       empty  set  of  predicates is used. Note	that even the lookup is	influ-
       enced by	the set	of actual predicates as	the "requires"	variables  may
       be conditional.

       What  is	printed	about a	package	depends	on the specified format; there
       are a number of options that modify the	format.	 Some  formats	denote
       sets  of	 values	 (such	as  -format %a), in which case multiple	output
       records are printed for every package. (It is even possible to  specify
       formats	denoting  the Cartesian	product	of sets, such as -format %a%o,
       but this	does not make sense.) Before the first output record the  pre-
       fix  is	printed,  and  the  suffix  after the last record. Between two
       records the separator is	printed.

   Options
	 -predicates p

	      Sets the set of actual predicates. The argument  p is a list  of
	      predicate	 names separated  by commas and/or whitespace. If mul-
	      tiple -predicates	options	are  given, the	union of all specified
	      sets is effectively used.

	 -format f

	      Sets the format to the string  f.	Characters preceded by a  per-
	      cent sign	 are interpreted as placeholders; all other characters
	      mean    themselves.  The defined placeholders are	listed below.
	      The default format is "%d".

	 -long-format or -l

	      Sets the format such that	all relevant variables are printed.

	 -i-format

	      Same as -format "-I %d", i.e. directory options for  ocamlc  are
	      printed.

	 -l-format

	      Same  as	-format	 "-ccopt -L%d",	i.e. directory options for the
	      linker backend are printed.

	 -a-format

	      Same as -format "%+a", i.e. archive file names are printed.

	 -o-format

	      Same as -format "%o", i.e. linker	options	are printed.

	 -p-format

	      Same as -format "%p", i.e. package names are printed.

	 -prefix p

	      Sets the prefix that is printed before the first output record
	      to the given string. The default prefix is the empty string.

	 -suffix s

	      Sets the suffix that is printed after the	last output record  to
	      the given	string.	The default suffix is the empty	string.

	 -separator s

	      Sets  the	 separator  that is printed between output records to
	      the given	string.	The default separator is a linefeed character.

	 -recursive or -r

	      Not only the packages given on the command line are queried  but
	      also all ancestors or descendants. If the	option -descendants is
	       specified, too, the descendants are printed, otherwise the  an-
	      cestors. The packages are	topologically sorted.

	 -descendants -d

	      Instead of the ancestors the descendants of the  given  packages
	      are queried. This	option implies -recursive.

	 -pp

	      Query preprocessor packages (camlp4 syntax extensions). Normally
	      it  is  not  needed  to  set  -predicates,  except  you need the
	      archives (then add -predicates byte). This option	 implies  -re-
	      cursive.

	 -qe

	      Do not print most	errors to stderr, just set the exit code

	 -qo

	      Do not print the regular output.

   Placeholders	meaningful in the -format option
	 %%

	      Replaced by a single percent sign

	 %p

	      Replaced by the package name

	 %d

	      Replaced by the package directory

	 %m

	      Replaced by the path to the META file (new since findlib-1.6)

	 %D

	      Replaced by the package description

	 %v

	      Replaced by the version string

	 %a

	      Replaced	by  the	 archive  filename. If there is	more  than one
	      archive, a separate output record	is printed for every archive.

	 %+a

	      Like %a, but the filenames are converted to absolute  paths ("+"
	      and "@" notations	are resolved)

	 %A

	      Replaced by the list of archive filenames.

	 %+A

	      Like %A, but the filenames are converted to absolute  paths ("+"
	      and "@" notations	are resolved)

	 %o

	      Replaced by one linker option. If	there is more than    one  op-
	      tion, a separate output record is	printed	for every option.

	 %O

	      Replaced by the list of linker options.

	 %(property)

	      Replaced	by  the	value of the property named in parentheses, or
	      the empty	string if not defined.

THE SUBCOMMANDS	'ocamlc', 'ocamlcp', 'ocamlopt', and 'ocamlmktop'
   Synopsis
       ocamlfind ( ocamlc | ocamlcp | ocamlopt | ocamlmktop )
		 [ -package package-name-list |
		   -linkpkg |
		   -predicates pred-name-list |
		   -dontlink package-name-list |
		   -syntax pred-name-list |
		   -ppopt camlp4-arg |
		   -ppxopt package,arg |
		   -dllpath-pkg	package-name-list |
		   -dllpath-all	|
		   -passopt arg	|
		   -passrest arg... |
		   -only-show |
		   standard-option ]
		 file ...

   Description
       These subcommands are drivers for the compilers with  the  same	names,
       i.e.  "ocamlfind	 ocamlc" is a driver for "ocamlc", and so on. The sub-
       commands	understand all	documented  options  of	 the  compilers	 (here
       called standard-options), but also a few	more options. If these subcom-
       mands are invoked only with standard options, they behave as if the un-
       derlying	 compiler  had	been called directly. The extra	options	modify
       this.

       Internally, these subcommands transform the given list of  options  and
       file  arguments	into an	invocation of the driven compiler. This	trans-
       formation only adds options and files, and the relative	order  of  the
       options and files passed	directly is unchanged.

       If  there  are -package options,	additional directory search specifiers
       will be included	("-I", and "-ccopt -I"), such that files of all	 named
       packages	and all	ancestors can be found.

       The -linkpkg option causes that the packages listed in the -package op-
       tions  and  all	necessary ancestors are	linked in. This	means that the
       archive files implementing the packages are inserted into the  list  of
       file arguments.

       As  the package database	is queried a set of predicates is needed. Most
       predicates are set automatically, see below, but	additional  predicates
       can be given by a -predicates option.

       If there	is a -syntax option, the drivers assume	that a preprocessor is
       to  be used. In this case, the preprocessor command is built first in a
       preprocessor stage, and this command is passed to  the  compiler	 using
       the -pp option. The set of predicates in	the preprocessor stage is dif-
       ferent from the set in the compiler/linker stage.

   Options for compiling and linking
       Here,  only  the	additional options not interpreted by the compiler but
       by the driver itself, and  options  with	 additional  effects  are  ex-
       plained.	 Some  options	are only meaningful for	the preprocessor call,
       and are explained below.

	 -package package-name-list

	      Adds the listed package names to the set of included   packages.
	      The package names	may be separated by commas and/or  whitespace.
	      In the transformed command, for every package of the set	of in-
	      cluded  packages and for any ancestor a directory	search option
	      is inserted after	the already given options. This	 means	that
	      "-I"  and	"-ccopt	-I" options are	added for every	package	direc-
	      tory.

	 -linkpkg

	      Causes that in the transformed command  all  archives    of  the
	      packages	specified  by  -packages  and all their	ancestors are
	      added to the file	arguments. More	precisely, these archives are
	      inserted before the  first  given	 file  argument.  Furthermore,
	      "-ccopt  -L" options for all package directories,	and the	linker
	      options  of  the selected	packages are added, too. Note that the
	      archives are  inserted in	topological order while	the linker op-
	      tions are	added in  reverse toplogical order.

	 -predicates pred-name-list

	      Adds the given predicates	to the set of actual  predicates.  The
	      predicates must be separated by commas and/or  whitespace.

	 -dontlink package-name-list

	      This option modifies the behaviour of  -linkpkg. Packages	speci-
	      fied  here and all ancestors are not linked  in. Again the pack-
	      ages are separated by commas and/or whitespace.

	 -dllpath-pkg package-name-list

	      For these	packages -dllpath options  are added to	 the  compiler
	      command.	This may be useful when	the ld.conf  file is not prop-
	      erly configured.

	 -dllpath-all

	      For all linked packages -dllpath options	are added to the  com-
	      piler  command. This may be useful when the ld.conf  file	is not
	      properly configured.

	 -passopt arg

	      The argument arg is  passed directly to the underlying compiler.
	      This is needed to	 specify undocumented compiler options.

	 -passrest arg...

	      All following arguments arg... are  passed directly to  the  un-
	      derlying	compiler. This is needed to  specify undocumented com-
	      piler options.

	 -only-show

	      Only prints the constructed command (ocamlc/ocamlopt) to	  std-
	      out, but does not	execute	the command. (This is for the unlikely
	      event  that you need a wrapper around ocamlfind.)

	 -verbose

	      This standard option is interpreted by the driver, too.

	 -thread

	      This standard option causes that the predicate "mt"  is added to
	      the  set	of actual predicates. If POSIX threads are available,
	      the predicate "mt_posix" is selected, too. If  only  VM  threads
	      are   available, the predicate "mt_vm" is	included into the set,
	      and the  compiler	switch is changed into -vmthread.

	      Note that	the presence of	the "mt"  predicate  triggers  special
	      fixup of the dependency graph (see below).

	 -vmthread

	      This  standard  option  causes  that  the	 predicates  "mt"  and
	      "mt_vm" are added	to the set of actual predicates.

	      Note that	the presence of	the "mt"  predicate  triggers  special
	      fixup of the dependency graph (see below).

	 -p

	      This  standard  option  of "ocamlopt" causes that	the  predicate
	      "gprof" is added to the set of actual predicates.

   Options for preprocessing
       The options relevant for	the preprocessor are the following:

	 -package package-name-list

	      These packages are considered while looking up the  preprocessor
	      arguments. (It does not cause problems that the same    -package
	      option  is used for this purpose,	because	the set	of predicates
	      is different.) It	is recommended to mention  at  least  camlp4
	      here if the preprocessor is going	to be used.

	 -syntax pred-name-list

	      These  predicates	 are  assumed  to  be true in addition	to the
	      standard preprocessor predicates.	See below for a	list.

	 -ppopt	camlp4-arg

	      This argument is passed to the camlp4 call.

	 -ppxopt package,arg

	      Add arg to the ppx  preprocessor invocation  specified  via  the
	      "ppx" property in	 the META file of package.

   Predicates for compiling and	linking
	 byte

	      The "byte" predicate means that one of the bytecode compilers is
	      used. It is automatically	included into the predicate set	if the
	      "ocamlc",	"ocamlcp", or "ocamlmktop" compiler is used.

	 native

	      The  "native"  predicate means that the native compiler is used.
	      It is automatically included  into  the  predicate  set  if  the
	      "ocamlopt" compiler is used.

	 toploop

	      The  "toploop"  predicate	means that the toploop is available in
	      the linked program. This predicate is only set when the  toploop
	      is  actually  being  executed,  not  when	the toploop is created
	      (this changed in version 1.0.4 of	findlib).

	 create_toploop

	      This predicate means that	a  toploop  is	being  created	(using
	      ocamlmktop).

	 mt

	      The  "mt"	predicate means	that the program is multi-threaded. It
	      is automatically included	into the predicate set if the  -thread
	      option is	given.

	 mt_posix

	      The  "mt_posix"  predicate  means	 that in the case "mt" is set,
	      too,  the	 POSIX	libraries  are	used  to  implement   threads.
	      "mt_posix"  is  automatically included into the predicate	set if
	      the variable "type_of_threads" in	the META  description  of  the
	      "threads"	 package  has  the value "posix". This is normally the
	      case if "findlib"	is configured for POSIX	threads.

	 mt_vm

	      The "mt_vm" predicate means that in the case "mt"	is  set,  too,
	      the VM thread emulation is used to implement multi-threading.

	 gprof

	      The  "gprof"  predicate  means that in the case "native" is set,
	      too, the program is compiled for profiling. It is	 automatically
	      included into the	predicate set if "ocamlopt" is used and	the -p
	      option is	in effect.

	 autolink

	      The  "autolink"  predicate  means	that ocamlc is able to perform
	      automatic	linking. It is automatically included into the	predi-
	      cate  set	if ocamlc knows	automatic linking (from	version	3.00),
	      but it is	not set	if the -noautolink option is set.

	 syntax

	      This predicate is	set if there is	a -syntax  option. It  is  set
	      both for the preprocessor	and the	compiler/linker	stage,	and it
	      can  be  used to find out	whether	the preprocessor is enabled or
	      not.

   Predicates for preprocessing
	 preprocessor

	      This predicate is	always set while looking up the	  preprocessor
	      arguments. It can	be used	to distinguish between the  preproces-
	      sor stage	and the	compiler/linker	stage.

	 syntax

	      This  predicate  is set if there is a -syntax  option. It	is set
	      both for the preprocessor	and the	compiler/linker	stage,	and it
	      can be used to find out whether the preprocessor is  enabled  or
	      not.

	 camlp4o

	      This  is	the reserved predicate for the standard	OCaml syntax.
	      It can be	used in	the -syntax predicate list.

	 camlp4r

	      This is the reserved predicate for the revised OCaml syntax.  It
	      can be used in the -syntax predicate list.

   Special behaviour of	'ocamlmktop'
       As there	is a special module Topfind that supports loading of  packages
       in scripts, the "ocamlmktop" subcommand can add initialization code for
       this module. This extra code is linked into the executable if "findlib"
       is in the set of	effectively linked packages.

   Fixup of the	dependency graph for multi-threading
       For  a  number  of  reasons the presence	of the "mt" predicate triggers
       that (1)	the package "threads" is added to the list of  required	 pack-
       ages  and  (2)  the package "threads" becomes prerequisite of all other
       packages	(except	of itself and a	few hardcoded exceptions). The	effect
       is  that	 the  options  -thread	and -vmthread automatically select the
       "threads" package, and that "threads" is	inserted at the	right position
       in the package list.

   Extended file naming
       At a number of places one can not only refer to files  by  absolute  or
       relative	 path  names, but also by extended names. These	have two major
       forms: "+name" refers to	the subdirectory name of the standard  library
       directory,  and	"@name"	refers to the package directory	of the package
       name. Both forms	can be continued  by  a	 path,	e.g.  "@netstring/net-
       string_top.cma".

       You can use extended names: (1) With -I options,	(2) as normal file ar-
       guments of the compiler,	(3) in the  "archive" property of packages.

   How to set the names	of the compiler	executables
       Normally,  the  OCaml  bytecode	compiler  can be called	under the name
       ocamlc. However,	this is	not always true; sometimes a different name is
       chosen.

       You can instruct	ocamlfind to call executables with  other  names  than
       ocamlc,	ocamlopt, ocamlmktop, and ocamlcp. If present, the environment
       variable	OCAMLFIND_COMMANDS is interpreted as a mapping from the	 stan-
       dard  names  to	the  actual names of the executables. It must have the
       following format:

       standardname1=actualname1 standardname2=actualname2 ...

       Example:	You may	set OCAMLFIND_COMMANDS as follows:

       OCAMLFIND_COMMANDS='ocamlc=ocamlc-3.00 ocamlopt=ocamlopt-3.00'
       export OCAMLFIND_COMMANDS

       Alternatively, you can change the configuration file findlib.conf.

THE SUBCOMMAND 'ocamlmklib'
   Synopsis
       ocamlfind ocamlmklib
		 [ -package package-name-list |
		   -predicates pred-name-list |
		   -dllpath-pkg	package-name-list |
		   -dllpath-all	|
		   -passopt arg	|
		   -passrest arg... |
		   standard-option ]
		   file	...

   Description
       This is a wrapper around	ocamlmklib, and	creates	library	 archives  and
       DLLs.  In addition to the standard options, one can use -package	to add
       the search path of packages. Note that no predicates are	set by default
       - the wrapper does not know whether this	is about byte or  native  code
       linking.

       This wrapper is mostly provided for completeness.

THE 'ocamldep' SUBCOMMAND
   Synopsis
       ocamlfind ocamldep [-package package-name-list |
			   -syntax pred-name-list |
			   -ppopt camlp4-arg |
			   -passopt arg	|
			   -passrest arg... |
			   -verbose |
			   standard-option] file ...

   Description
       This  command  is a driver for the tool ocamldep	of the OCaml distribu-
       tion. This driver is only useful	in conjunction with  the  preprocessor
       camlp4;	otherwise it does not provide more functions than ocamldep it-
       self.

   Options
       Here, only the additional options not interpreted by  ocamldep  but  by
       the driver itself, and options with additional effects are explained.

	 -package package-name-list

	      The  packages named here are only	used to	look up	the preproces-
	      sor options. The package camlp4 should be	specified anyway,  but
	      further  packages	 that add capabilities to the preprocessor can
	      also be passed.

	 -syntax pred-name-list

	      The predicates that are in effect	during the look-up of the pre-
	      processor	options. At least, either camlp4o (selecting the  nor-
	      mal syntax), or camlp4r (selecting the revised syntax) should be
	      specified.

	 -ppopt	camlp4-arg

	      An option	that is	passed through to the camlp4 call.

	 -passopt arg

	      An option	that is	passed through to the ocamldep call.

	 -passrest arg...

	      All further arguments are	passed down to ocamldep	 unprocessed

	 -verbose

	      Displays the resulting ocamldep command (for debugging)

   Example
       A typical way of	using this driver:

       ocamlfind ocamldep -package camlp4,xstrp4 -syntax camlp4r file1.ml file2.ml
	   This	command	outputs	the dependencies of file1.ml and file2.ml, al-
       though these modules make use of	 the  syntax  extensions  provided  by
       xstrp4 and are written in revised syntax.

THE 'ocamlbrowser' SUBCOMMAND
   Synopsis
       ocamlfind ocamlbrowser [-package	package-name-list |
			       -all |
			       -passopt	arg
			       -passrest ]

   Description
       This driver calls the ocamlbrowser with package options.	With -package,
       the  specified  packages	 are  included	into  the  search  path	of the
       browser,	and the	modules	of these packages become visible (in  addition
       to  the standard	library). The option -all causes that all packages are
       selected	that are managed by findlib.

       As for other drivers, the options -passopt and -passrest	can be used to
       pass arguments directly to the ocamlbrowser program.

THE SUBCOMMAND 'ocamldoc'
   Synopsis
       ocamlfind ocamldoc
		 [ -package package-name-list |
		   -predicates pred-name-list |
		   -syntax pred-name-list |
		   -ppopt camlp4-arg |
		   standard-option ]
		 file ...

   Description
       This subcommand is a driver for ocamldoc.  It  undestands  all  options
       ocamldoc	 supports  plus	 the mentioned findlib options.	Basically, the
       -package	options	are translated into -I options,	and the	selected  syn-
       tax options are translated into camlp4 options.

   Options
       Here,  only  the	 additional options not	interpreted by ocamldep	but by
       the driver itself, and options with additional effects are explained.

	 -package package-name-list

	      Adds the listed package names to the set of included   packages.
	      The package names	may be separated by commas and/or  whitespace.
	      In the transformed command, for every package of the set	of in-
	      cluded  packages and for any ancestor a directory	search option
	      is inserted after	the already given options. This	 means	that
	      "-I" options are added for every package directory.

	 -predicates pred-name-list

	      Adds  the	given predicates to the	set of actual  predicates. The
	      predicates must be separated by commas and/or  whitespace.

	 -syntax pred-name-list

	      The predicates that are in effect	during the look-up of the pre-
	      processor	options. At least, either camlp4o (selecting the  nor-
	      mal syntax), or camlp4r (selecting the revised syntax) should be
	      specified.

	 -ppopt	camlp4-arg

	      An option	that is	passed through to the camlp4 call.

THE 'install' SUBCOMMAND
   Synopsis
       ocamlfind install [ -destdir directory ]
			 [ -metadir directory ]
			 [ -ldconf path	]
			 [ -dont-add-directory-directive ]
			 [ -patch-version string ]
			 [ -patch-rmpkg	name ]
			 [ -patch-archives ]
			 [ -dll	] [ -nodll ] [ -optional ] [ -add ]
			 package_name file ...

   Description
       This  subcommand	 installs a new	package	either at the default location
       (see the	variable destdir of findlib.conf), or in the directory	speci-
       fied by the -destdir option. This means that a new package directory is
       created	and  that the files on the command line	are copied to this di-
       rectory.	It is required that a META file	is one of the files copied  to
       the target directory.

       Note  that  package directories should be flat (no subdirectories). Ex-
       isting packages are never overwritten.

       It is possible to have a	separate directory for all the META files.  If
       you  want  that,	 you have either to set	the variable metadir of	 find-
       lib.conf, or to specify the -metadir option. In	this  case,  the  file
       called  META is copied to the specified directory and renamed to	META.p
       (where p	is the package name), while all	the other files	are copied  to
       the  package directory as usual.	Furthermore, the META file is modified
       such that the directory variable	contains the path of the  package  di-
       rectory.

       The  option  -dont-add-directory-directive  prevents the	installer from
       adding a	directory variable.

       If there	are files ending in the	suffixes .so or	.dll, the package  di-
       rectory	will be	added to the DLL configuration file ld.conf, such that
       the dynamic loader can find the DLL. The	location of this file  can  be
       overriden by the	-ldconf	option.	To turn	this feature off, use "-ldconf
       ignore";	this causes that the ld.conf file is not modified.

       However,	if there is a stublibs directory in site-lib, the DLLs are not
       installed  in  the  package  directory,	but  in	this directory that is
       shared by all packages that are installed at the	same location. In this
       case, the configuration file ld.conf is not modified,  so  you  do  not
       need to say "-ldconf ignore" if you prefer this style of	installation.

       The  options -dll and -nodll can	be used	to control exactly which files
       are considered as DLLs and which	not. By	default, the mentioned	suffix
       rule is in effect: files	ending in ".so"	(Unix) or ".dll" (Windows) are
       DLLs. The switch	-dll changes this, and all following files are consid-
       ered  as	DLLs, regardless of their suffix. The switch  -nodll expresses
       that the	following files	are not	DLLs, even if  they  have  a  DLL-like
       suffix. For example, in the following call the files f1 and f2 are han-
       dled  by	 the suffix rule; f3 and f4 are	DLLs anyway; and f5 and	f6 are
       not DLLs:

       ocamlfind install p f1 f2 -dll f3 f4 -nodll f5 f6

       The switch -optional declares that all following	 files	are  optional,
       i.e. the	command	will not fail if files do not exist.

       The -patch options may be used to change	the contents of	the META files
       while it	is being installed. The	option -patch-version changes the con-
       tents  of the top-level "version" variable. The option -patch-rmpkg re-
       moves the given subpackage. The option -patch-archives is experimental,
       in particular it	removes	all non-existing files	from  "archive"	 vari-
       ables, and even whole subpackages if the	archives are missing.

       The  effect  of	-add  is  to add further files to an already installed
       packages.

THE 'remove' SUBCOMMAND
   Synopsis
       ocamlfind remove	[ -destdir directory ]
			[ -metadir directory ]
			[ -ldconf path ]
			package_name

   Description
       The package will	removed	if it is installed at the  default  location
       (see the	variable destdir of findlib.conf). If the package resides at a
       different location, it will not be removed by default; however, you can
       pass  an	alternate directory for	packages by the	-destdir option. (This
       must be the same	directory as specified at installation time.)

       Note that package directories should be flat (no	subdirectories);  this
       subcommand cannot remove	deep package directories.

       If  you	have a separate	directory for META files, you must either con-
       figure this directory by	the metadir variable of	 findlib.conf,	or  by
       specifying the -metadir option.

       The command does	not fail if the	package	and/or the META	file cannot be
       located.	You will get a warning only in this case.

       If the package directory	is mentioned in	the ld.conf configuration file
       for  DLLs, it will be tried to remove this entry	from the file. The lo-
       cation of this file can be overriden by the  -ldconf  option.  To  turn
       this  feature  off,  use	"-ldconf ignore"; this causes that the ld.conf
       file is not modified.

       If there	is a stublibs directory, it is	checked	 whether  the  package
       owns  any  of  the files	in this	directory, and the owned files will be
       deleted.

THE 'list' SUBCOMMAND
   Synopsis
       ocamlfind list [-describe]

   Description
       This command lists all packages in the search  path.  The  option  -de-
       scribe outputs the package descriptions,	too.

THE 'printppx' SUBCOMMAND
   Synopsis
       ocamlfind printppx
		 [ -predicates pred-name-list ]
		 [ -ppxopt package,arg ]
		 package ...

   Description
       This command prints the ppx preprocessor	options	as they	would occur in
       an  OCaml  compiler  invocation for the packages	listed in the command.
       The output includes one "-ppx" option for each preprocessor. The	possi-
       ble options have	the same meaning as for	"ocamlfind ocamlc". The	option
       "-predicates" adds assumed predicates and  "-ppxopt  package,arg"  adds
       "arg" to	the ppx	invocation of package package.

       The output of "ocamlfind	printppx" will contain quotes """ for ppx com-
       mands  that contain space-separated arguments. In this case $(ocamlfind
       printppx	...) won't work	as naively expected, because many shells  (in-
       cluding bash and	dash) perform field splitting on the result of command
       substitutions without honoring quotes.

THE 'lint' SUBCOMMAND
   Synopsis
       ocamlfind lint file

   Description
       Checks the META file, and reports possible problems.

THE 'printconf'	SUBCOMMAND
   Synopsis
       ocamlfind printconf [ conf | path | destdir | metadir | metapath	| stdlib | ldconf ]

   Description
       This  command prints the	effective configuration	after reading the con-
       figuration file,	and after applying the various	environment  variables
       overriding  settings. When called without arguments, the	command	prints
       all configuration options in a human-readable form. When	called with an
       argument, only the value	of the requested option	is printed without ex-
       plaining	texts:

	 conf

	      Prints the location of the configuration file findlib.conf

	 path

	      Prints the search	path for packages. The members of  the	  path
	      are separated by linefeeds.

	 destdir

	      Prints  the location where package are installed and  removed by
	      default.

	 metadir

	      Prints the location where	META files are installed and   removed
	      (if the alternative layout is used).

	 metapath

	      Prints  the  path	where the META file is installed for a fictive
	      package. The name	of the package is  marked  with	 '%s'  in  the
	      path.	For    instance,    this    command    could	output
	      "/some/path/%s/META" or "/some/path/META.%s", depending  on  the
	      layout.

	 stdlib

	      Prints the location of the standard library.

	 ldconf

	      Prints the location of the ld.conf file

THE SUBCOMMAND CALLING PACKAGE PROGRAMS
   Synopsis
       ocamlfind pkg/cmd argument ...

   Description
       This  subcommand	is useful to call programs that	are installed in pack-
       age directories.	It looks up the	directory for  pkg and calls the  com-
       mand named cmd in this directory. The remaining arguments are passed to
       this command.

       argv(0)	contains the absolute path to the command, and argv(1) and the
       following argv entries contain the arguments. The working directory  is
       not changed.

       Example:	To call	the program "x"	that is	installed in package "p", with
       arguments "y" and "z", run:

       ocamlfind p/x y z

CONFIGURATION FILE, ENVIRONMENT	VARIABLES
       The  configuration file and environment variables are documented	in the
       manual page for	findlib.conf.

HOW TO SET THE TOOLCHAIN
   Synopsis
       ocamlfind -toolchain name ...

   Description
       The -toolchain option can be given before any other command, e.g.

       ocamlfind -toolchain foo	ocamlc -c file.ml
	compiles file.ml with toolchain	"foo". By selecting toolchains one can
       switch to different command sets. For instance, the toolchain "foo" may
       consist of a patched ocamlc compiler.   See findlib.conf	how to config-
       ure toolchains.

User Manual	     The findlib package manager for OCaml	  ocamlfind(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=ocamlfind&sektion=1&manpath=FreeBSD+Ports+14.3.quarterly>

home | help