Restricts concurrent execution of jobs in a given pool. More...


Detailed Description

In addition to the global limit on concurrently running commands, a project might want to restrict concurrent execution of certain types of commands even further, for instance because they are not well-suited to share certain types of resources.

In the following example, we define a rule that runs a tool of which at most one instance can be running for the same project at any given time:

Rule {
    // ...
    prepare: {
        var cmd = new Command("my-exclusive-tool", [project.buildDirectory]);
        cmd.description = "running the exclusive tool";
        cmd.jobPool = "exclusive_tool";
        return cmd;
JobLimit {
    jobPool: "exclusive_tool"
    jobCount: 1

JobLimit items can appear inside Product, Project and Module items. In the case of collisions, that is, items matching the same job pool but setting different values, the ones defined inside products have the highest precedence, and the ones inside modules have the lowest. Items defined in sub-projects have higher precedence than those defined in parent projects. For items with the same precedence level, the most restrictive one is chosen, that is, the one with the lowest job number greater than zero.

See also How do I limit the number of concurrent jobs for the linker only?.

Property Documentation

condition : bool

Determines whether the job limit is active.

If this property is set to false, the job limit is ignored.

Default: true

jobCount : int

The maximum number of commands in the given job pool that can run concurrently.

A value of zero means "unlimited", negative values are not allowed.

Note: The global job limit always applies: For instance, if you set this property to 100 for some job pool, and "-j 8" was given on the command line, then no more than eight instances of commands from the respective job pool will run at any time.

This property must always be set.

Default: Undefined

jobPool : string

The job pool to which apply the limit.

This property must always be set to a non-empty value.

Default: Undefined

© 2023 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.