Product Item
A product typically represents the result of a build process. It specifies a set of input and output files and a way to transform the former into the latter. For example, the following product sets up a very simple C++ application:
Product { name: "helloworld" type: "application" files: "main.cpp" Depends { name: "cpp" } }
The type
property specifies what will be built (an executable). The files
property specifies the input files (one C++ source file), and the Depends
item pulls in the logic from the cpp
module about how to do the necessary transformations. For some often-used types of products, Qbs pre-defines special derived items that save users some typing. These are:
- Application
- CppApplication
- DynamicLibrary
- StaticLibrary
Therefore, the above example could also be written like this:
CppApplication { name: "helloworld" files: "main.cpp" }
Any property prop
attached to this item is available in sub-items as product.prop
, as well as in modules that are loaded from this product.
Product Properties
Property | Type | Default | Description |
---|---|---|---|
builtByDefault | bool | true | If false, the product will only be built if this is explicitly requested, either by listing the product name as an argument to --products or by giving the build command the --all-products option. |
condition | bool | true | If false, the product will not be built. |
name | string | empty string | The name of the product. Used to identify the product in a Depends item, for example. The value of this property must be a simple JavaScript expression that does not depend on module properties or values that are non-local to this product.CppApplication { name: "hello" + "world" // valid } CppApplication { name: "app_" + qbs.targetOS.join("_") // invalid } To change the name of your product's target artifact, modify |
type | stringList | empty list | The file tags matching the product's target artifacts. |
targetName | string | name with illegal file name characters replaced by underscores | The base file name of the product's target artifacts. |
destinationDirectory | string | product.buildDirectory | The directory where the target artifacts will be located. If a relative path is given, the base directory will be project.buildDirectory . |
files | stringList | empty list | A list of source files. Syntactic sugar to save a Group item for simple products. Relative paths are resolved using the parent directory of the project file that sets the property. |
excludeFiles | stringList | empty list | A list of source files not to include. Useful with wildcards. For more information, see Group Item. |
consoleApplication | bool | linker-dependent | If true, a console application is generated. If false, a GUI application is generated. Only takes effect on Windows. This property also influences the default application type on Apple platforms. If true, an application bundle is generated. If false, a normal executable is generated. |
qbsSearchPaths | stringList | project.qbsSearchPaths | See the documentation of the Project Item property of the same name. The value set here will be merged with the one inherited from the project. |
version | string | undefined | The version number of the product. Used in shared library filenames and generated Info.plist files in Apple application and framework bundles, for example. |
The following properties are relevant for product multiplexing only. Unless multiplexing is desired, they can be left at their default values.
Note: We do not promise backwards compatibility for multiplexing properties as they are likely to change in future Qbs versions.
Property | Type | Default | Description |
---|---|---|---|
aggregate | bool | undefined | If true , an aggregate product will be created that has dependencies on all multiplex instances of this product. |
multiplexedType | stringList | undefined | Specifies the product type for the multiplexed product instances. |
multiplexByQbsProperties | stringList | ["profiles"] | Specifies which properties of the qbs module will be used for product multiplexing. Its value must be a subset of ["architectures", "buildVariants", "profiles"] . |
The following properties are automatically set by Qbs and cannot be changed by the user:
Property | Type | Description |
---|---|---|
buildDirectory | path | The build directory for this product. This is the directory where generated files are placed. |
sourceDirectory | path | The source directory for this product. This is the directory of the file where this product is defined. |