# add_dependencies

Add a dependency between top-level targets.

    add_dependencies(<target> [<target-dependency>]...)

Makes a top-level `<target>` depend on other top-level targets to ensure that they build before `<target>` does. A top-level target is one created by one of the `add_executable()`, `add_library()`, or `add_custom_target()` commands (but not targets generated by CMake like `install`).

Dependencies added to an imported target or an interface library are followed transitively in its place since the target itself does not build.

Added in version 3.3: Allow adding dependencies to interface libraries.

Added in version 3.8: Dependencies will populate the `MANUALLY_ADDED_DEPENDENCIES` property of `<target>`.

Changed in version 3.9: The Ninja Generators use weaker ordering than other generators in order to improve available concurrency. They only guarantee that the dependencies' custom commands are finished before sources in `<target>` start compiling; this ensures generated sources are available.

## See Also

- The `DEPENDS` option of `add_custom_target()` and `add_custom_command()` commands for adding file-level dependencies in custom rules.

- The `OBJECT_DEPENDS` source file property to add file-level dependencies to object files.