OCAMLDEP(1) General Commands Manual OCAMLDEP(1)

# [NAME](#NAME)

ocamldep - Dependency generator for OCaml

# [SYNOPSIS](#SYNOPSIS)

**ocamldep** \[ *options* ] *filename ...*

# [DESCRIPTION](#DESCRIPTION)

The [**ocamldep**(1)](/man/os/ocaml/ocamldep.1) command scans a set of OCaml source files (.ml and .mli files) for references to external compilation units, and outputs dependency lines in a format suitable for the [**make**(1)](/man/os/ocaml/make.1) utility. This ensures that make will compile the source files in the correct order, and recompile those files that need to when a source file is modified.

The typical usage is:

ocamldep *options* \*.mli \*.ml &gt; .depend

where .depend is the file that should contain the dependencies.

Dependencies are generated both for compiling with the bytecode compiler [**ocamlc**(1)](/man/os/ocaml/ocamlc.1) and with the native-code compiler [**ocamlopt**(1)](/man/os/ocaml/ocamlopt.1).

# [OPTIONS](#OPTIONS)

The following command-line options are recognized by [**ocamldep**(1)](/man/os/ocaml/ocamldep.1).

[**-absname**](#absname)

Show absolute filenames in error messages.

[**-no-absname**](#no-absname)

Do not try to show absolute filenames in error messages (default).

[**-all**](#all)

Generate dependencies on all required files, rather than assuming implicit dependencies.

[**-allow-approx**](#allow)

Allow falling back on a lexer-based approximation when parsing fails.

[**-as-map**](#as)

For the following files, do not include delayed dependencies for module aliases. This option assumes that they are compiled using options "-no-alias-deps -w -49", and that those files or their interface are passed with the "-map" option when computing dependencies for other files. Note also that for dependencies to be correct in the implementation of a map file, its interface should not coerce any of the aliases it contains.

[**-debug-map**](#debug)

Dump the delayed dependency map for each map file.

[**-I directory**](#I)

Add the given directory to the list of directories searched for source files. If a source file foo.ml mentions an external compilation unit Bar, a dependency on that unit's interface bar.cmi is generated only if the source for bar is found in the current directory or in one of the directories specified with **-I**. Otherwise, Bar is assumed to be a module from the standard library, and no dependencies are generated. For programs that span multiple directories, it is recommended to pass [**ocamldep**(1)](/man/os/ocaml/ocamldep.1) the same **-I** options that are passed to the compiler.

[**-nocwd**](#nocwd)

Do not add current working directory to the list of include directories.

[**-impl file**](#impl)

Process *file* as a .ml file.

[**-intf file**](#intf)

Process *file* as a .mli file.

[**-keywords version+list**](#keywords)

Set keywords according to the *version+list* specification.

[**-map file**](#map)

Read an propagate the delayed dependencies for module aliases in *file*, so that the following files will depend on the exported aliased modules if they use them.

[**-ml-synonym .ext**](#ml)

Consider the given extension (with leading dot) to be a synonym for .ml.

[**-mli-synonym .ext**](#mli)

Consider the given extension (with leading dot) to be a synonym for .mli.

[**-modules**](#modules)

Output raw dependencies of the form *filename*: *Module1 Module2* ... *ModuleN* where *Module1*, ..., *ModuleN* are the names of the compilation units referenced within the file *filename*, but these names are not resolved to source file names. Such raw dependencies cannot be used by [**make**(1)](/man/os/ocaml/make.1), but can be post-processed by other tools such as [**Omake**(1)](/man/os/ocaml/Omake.1).

[**-native**](#native)

Generate dependencies for a pure native-code program (no bytecode version). When an implementation file (.ml file) has no explicit interface file (.mli file), [**ocamldep**(1)](/man/os/ocaml/ocamldep.1) generates dependencies on the bytecode compiled file (.cmo file) to reflect interface changes. This can cause unnecessary bytecode recompilations for programs that are compiled to native-code only. The flag **-native** causes dependencies on native compiled files (.cmx) to be generated instead of on .cmo files. (This flag makes no difference if all source files have explicit .mli interface files.)

[**-one-line**](#one-line)

Output one line per file, regardless of the length.

[**-open module**](#open)

Assume that module *module* is opened before parsing each of the following files.

[**-pp command**](#pp)

Cause [**ocamldep**(1)](/man/os/ocaml/ocamldep.1) to call the given *command* as a preprocessor for each source file.

[**-ppx command**](#ppx)

Pipe abstract syntax tree through preprocessor *command*.

[**-shared**](#shared)

Generate dependencies for native plugin files (.cmxs) in addition to native compiled files (.cmx).

[**-slash**](#slash)

(Windows) Use forward slash / instead of backslash \\ in file paths. Under Unix, this option does nothing.

[**-no-slash**](#no)

(Windows) Preserve any backslash \\ in file paths. Under Unix, this option does nothing.

[**-sort**](#sort)

Sort files according to their dependencies.

[**-version**](#version)

Print version string and exit.

[**-vnum**](#vnum)

Print short version number and exit.

[**-args file**](#args)

Read additional newline separated command line arguments from *file*.

[**-args0 file**](#args0)

Read additional NUL separated command line arguments from *file*.

[**-help** or **--help**](#help)

Display a short usage summary and exit.

# [SEE ALSO](#SEE_ALSO)

[**ocamlc**(1)](/man/os/ocaml/ocamlc.1), [**ocamlopt**(1)](/man/os/ocaml/ocamlopt.1).  
*The OCaml user's manual*, chapter "Dependency generator".

---

Document: ocamldep(1) from ocaml 5.5.2-r0 (Chainguard OS)
Source: https://github.com/ocaml/ocaml
