---
name: "ocamldep"
section: "1"
platform: "linux"
package: "ocaml"
version: "5.5.0-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/ocamldep"
---

# ocamldep(1)

Dependency generator for OCaml

## NAME

ocamldep - Dependency generator for OCaml

## SYNOPSIS

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

## DESCRIPTION

The [**ocamldep**(1)](/ocamldep/1.md) 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)](/make/1.md) 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 \> .depend

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

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

## OPTIONS

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

- **-absname**

  Show absolute filenames in error messages.

- **-no-absname**

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

- **-all**

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

- **-allow-approx**

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

- **-as-map**

  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**

  Dump the delayed dependency map for each map file.

- **-I** *directory*

  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)](/ocamldep/1.md) the same **-I** options that are passed to the compiler.

- **-nocwd**

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

- **-impl** *file*

  Process *file* as a .ml file.

- **-intf** *file*

  Process *file* as a .mli file.

- **-keywords** *version+list*

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

- **-map** *file*

  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*

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

- **-mli-synonym** *.ext*

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

- **-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)](/make/1.md), but can be post-processed by other tools such as **Omake**(1).

- **-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)](/ocamldep/1.md) 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**

  Output one line per file, regardless of the length.

- **-open** *module*

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

- **-pp** *command*

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

- **-ppx** *command*

  Pipe abstract syntax tree through preprocessor *command*.

- **-shared**

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

- **-slash**

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

- **-no-slash**

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

- **-sort**

  Sort files according to their dependencies.

- **-version**

  Print version string and exit.

- **-vnum**

  Print short version number and exit.

- **-args** *file*

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

- **-args0** *file*

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

- **-help** or **--help**

  Display a short usage summary and exit.

## SEE ALSO

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