Qbs Manual | Depends Item

Qbs 1.9.0

Artifact Item ◦ Export Item

# Depends Item

A `Depends` item can appear inside a Product Item or Module Item.

For example, the following product will load the `cpp` module. In addition, it will try to load modules that may or may not exist, and in the latter case use a fallback.

      Product {
          Depends { name: "cpp" }
          Depends {
              name: "awesome_module"
              versionAtLeast: "2.0"
              required: false
          }
          Depends {
              name: "adequate_module"
              condition: !awesome_module.present
              required: false
          }
          Depends {
              name: "inferior_module"
              condition: !awesome_module.present && !adequate_module.present
          }

          // ...
      }

## Dependency Parameters

Sometimes it is desirable to have certain dependencies handled differently than others. For example, one might want to depend on a dynamic library without linking it.

This can be done by setting the parameter `cpp.link` to `true` in the dynamic library dependency:

      Product {
          Depends { name: "cpp" }
          Depends { name: "some_dynamic_lib"; cpp.link: false }

          // ...
      }

Dependency parameters are a special type of property that can only be set within `Depends` and `Parameters` items. Dependency parameters are declared in the modules they belong to.

In the example above, the `cpp` module declares the parameter `link`. The `Depends` item for some_dynamic_lib sets `cpp.link` to `false`, which tells the linker rule to ignore this particular dependency.

## Depends Properties

Property | Type | Default | Description
--- | --- | --- | ---
condition | bool | true | Determines whether the dependency will actually be applied.
versionAtLeast | string | undefined | The minimum value that the dependency's `version` property needs to have. If the actual version is lower than that, loading the dependency will fail. The value consists of integers separated by dots.
versionBelow | string | undefined | A value that the dependency's `version` property must be lower than. If the actual version is equal to or higher than that, loading the dependency will fail. The value consists of integers separated by dots.
productTypes | stringList | undefined | A list of product types. Any enabled product in the project that has a matching type will become a dependency of the product containing the `Depends` item. This property is mutually exclusive with the `name` and `submodules` properties. The `required` and `profiles` properties are ignored if `productTypes` is set.
required | bool | `true` | Setting this property to `false` creates a soft dependency, meaning that it is not considered an error if the given module cannot be found. In such a case, an instance of the respective module will be created, but only the `present` property will be available for querying, and it will be set to `false`.
name | string | undefined | The name of the dependent product or module.
profiles | stringList | `[product.profile]` | If the dependency is on a product and that product is going to be built for more than one profile, then you can specify here which instance of the product the dependency is on. See the `profiles` property of the `Product` item for more information. An empty list means a dependency on all instances of the product with the given name, regardless of their profile.
limitToSubProject | bool | `false` | If `productTypes` is set and this property is `true`, then only products that are in the same sub-project as the product containing the `Depends` item are considered.
submodules | stringList | undefined | The submodules of `module` to depend on, if applicable.

Artifact Item ◦ Export Item