1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213
|
/****************************************************************************
**
** Copyright (C) 2017 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qbs.
**
** $QT_BEGIN_LICENSE:FDL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU Free Documentation License Usage
** Alternatively, this file may be used under the terms of the GNU Free
** Documentation License version 1.3 as published by the Free Software
** Foundation and appearing in the file included in the packaging of
** this file. Please review the following information to ensure
** the GNU Free Documentation License version 1.3 requirements
** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
** $QT_END_LICENSE$
**
****************************************************************************/
/*!
\previouspage Artifact
\nextpage Export
\qmltype Depends
\inqmlmodule QbsLanguageItems
\ingroup list-of-items
\keyword QML.Depends
\brief Represents dependencies between products and modules.
A Depends item can appear inside a \l{Product} or \l{Module} item.
For example, the following product will load the \l{cpp} module. In
addition, it will try to load modules that may or may not exist, and
pass this information on to the compiler.
\code
Product {
Depends { name: "cpp" }
Depends {
name: "optional_module"
versionAtLeast: "2.0"
required: false
}
Properties {
condition: optional_module.present
cpp.defines: "HAS_OPTIONAL_MODULE"
}
// ...
}
\endcode
\section1 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 \l{dependency-parameters-cpp}{cpp.link}
dependency parameter to \c{true} in the dynamic library dependency:
\code
Product {
Depends { name: "cpp" }
Depends { name: "some_dynamic_lib"; cpp.link: false }
// ...
}
\endcode
Dependency parameters are a special type of property that can only be set
within Depends and \l [QML] {Parameters} items. Dependency parameters are
declared in the modules they belong to.
In the example above, the \l{cpp} module declares the parameter \c{link}.
The Depends item for \c{some_dynamic_lib} sets \c{cpp.link} to
\c{false}, which tells the linker rule to ignore this particular dependency.
*/
/*!
\qmlproperty bool Depends::condition
Determines whether the dependency will actually be applied.
\defaultvalue \c true
*/
/*!
\qmlproperty string Depends::versionAtLeast
The minimum value that the dependency's \c 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.
\nodefaultvalue
*/
/*!
\qmlproperty string Depends::versionBelow
A value that the dependency's \c 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.
\nodefaultvalue
*/
/*!
\qmlproperty stringList Depends::productTypes
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 \l name and \l submodules
properties.
The \l required and \l profiles properties are ignored if this property is
set.
\note This property does not work recursively. Consider this example:
\code
Product {
name: "A"
type: "x"
Depends { productTypes: "someTag" }
}
Product {
name: "B"
Depends { productTypes: "x" }
}
\endcode
It is not guaranteed that \c A will show up in \c B's dependencies.
\nodefaultvalue
*/
/*!
\qmlproperty bool Depends::required
Setting this property to \c false creates a \e{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 \l{Module::present}{Module.present} property will be available for
querying, and it will be set to \c false.
\defaultvalue \c true
*/
/*!
\qmlproperty bool Depends::minimal
Setting this property to \c false instructs \QBS to build the respective product
only to the extent that is necessary for the depending product.
Otherwise (the default), the dependency gets fully built.
This property only has an effect if the user requested a subset of the project
to be built (that is, the -p option is used), the dependency is not in that subset
and no other product in the subset has a non-minimal dependency on it.
\defaultvalue \c false
\since Qbs 3.0
*/
/*!
\qmlproperty string Depends::name
The name of the dependent product or module.
\nodefaultvalue
*/
/*!
\qmlproperty stringList Depends::profiles
A list of profiles.
If the dependency is on a product and that product is going to be built for
more than one profile, you can specify here which instance of the product
the dependency is on.
See the \l{qbs::profiles}{qbs.profiles} property for more information.
An empty list means a dependency on all instances of the product with the given name,
regardless of their profile.
\nodefaultvalue
*/
/*!
\qmlproperty bool Depends::limitToSubProject
If \l productTypes is set and this property is \c true, only products that
are in the same sub-project as the product containing the Depends item are
considered.
\defaultvalue \c false
*/
/*!
\qmlproperty stringList Depends::submodules
A list of submodules of the module to depend on, if applicable.
\nodefaultvalue
*/
|