- Qbs Manual
- Command-Line Interface
- generate
- Qbs 3.3.1

# generate

## Synopsis

     qbs generate [options] [[config:configuration-name] [property:value] ...]

## Description

Invokes a project generator, for example to create project files for another build tool.

For more information, see Generators.

## Options

### `--generator|-g <generator>`

Uses the specified build system generator.

Possible values of `<generator>` include:

- `clangdb`
- `visualstudio2015`
- `iarew8`

The available generators are listed if you run the `qbs generate` command without passing a generator to it.

### `--build-directory|-d <directory>`

Specifies a `<directory>` where build artifacts are stored.

The default value is the current directory unless `preferences.defaultBuildDirectory` is set.

Relative paths will be interpreted relative to the current directory.

You can use the following special values as placeholders:

- `@project` is expanded to the name of the project file excluding the extension `.qbs`.
- `@path` is expanded to the name of the directory containing the project file.

### `[--file|-f <file>]`

Uses `<file>` as the project file. If `<file>` is a directory and it contains a single file with the extension `.qbs`, that file will be used.

If this option is not given at all, the behavior is the same as for `-f <working-dir>`.

### `--install-root <directory>`

Installs into the specified `<directory>`. If the directory does not exist, it will be created.

The default value is `<build` dir>/install-root.

Use the special value `@sysroot` to install into the `sysroot`. That is, the value of the qbs.sysroot property.

### `--less-verbose|-q`

Becomes more quiet by decreasing the log level by one. This option can be given more than once. Excessive occurrences have no effect.

If the option `--log-level` appears anywhere on the command line in addition to this option, its value is taken as the base for the decrease.

### `--log-level <level>`

Uses the specified log level.

Possible values of `<level>` are:

- `error`
- `warning`
- `info` (default value)
- `debug`
- `trace`

### `--log-time`

Logs the time that the operations involved in this command take.

This option is implied in log levels `debug` and higher.

This option is mutually exclusive with `--show-progress`.

### `--more-verbose|-v`

Becomes more verbose by increasing the log level by one. This option can be given more than once. Excessive occurrences have no effect.

If the option `--log-level` appears anywhere on the command line in addition to this option, its value is taken as the base for the increase.

### `--settings-dir <directory>`

Reads all settings (such as profile information) from the specified `<directory>`. If the directory does not exist, it will be created.

The default value is system-specific. For example:

- Linux: `$HOME/.config/QtProject/qbs`
- Windows: `%APPDATA%\QtProject\qbs`
- macOS: `$HOME/Library/Preferences/qbs`

### `--show-progress`

Shows how command execution is progressing.

This option is mutually exclusive with `--log-time`.

## Parameters

### `config:configuration-name`

Specifies the build configuration to use.

Qbs can build a project for one or multiple configurations at once, each having a different set of parameters. The `config` parameter has a special function: with each occurrence a new configuration instance begins and all subsequent parameters until the next `config` are assigned to this instance. Parameter assignments before the first occurrence of `config` are applied to all build configurations. Inside products and modules, the current active build configuration can be retrieved via qbs.configurationName.

In the following snippet, a profile `clang` is applied to all configurations while `cpp.optimization` is different for `debug` and `release`:

     profile:clang config:debug cpp.optimization:none config:release cpp.optimization:small

The value of `config` determines the name of the build folder and affects the default value of the qbs.buildVariant property. Qbs knows the `config` values `"debug"` and `"release"`, but in general any name can be chosen. When naming configurations created for special purposes, follow the rules for legal names generally used in programming languages:

- The first character must be a letter (a-z), an underscore (_), or a dollar sign ($).
- Subsequent characters may be letters, digits, underscores, or dollar signs.

### `property:value`

Property values set in project files or profiles can be overridden on the command line. The syntax is:

     <prefix>.<property-name>:<property-value>

For more information, see Overriding Property Values from the Command Line.

## Examples

Generates a project for Microsoft Visual Studio:

     qbs generate -g visualstudio2015

Generates a Clang compilation database (clangdb):

     qbs generate --generator clangdb