diff options
author | Leena Miettinen <riitta-leena.miettinen@qt.io> | 2017-11-29 17:49:36 +0100 |
---|---|---|
committer | Leena Miettinen <riitta-leena.miettinen@qt.io> | 2017-11-30 10:41:29 +0000 |
commit | 423c8c4986c2aa62a8b49ba9289ea75be4b1bc27 (patch) | |
tree | efafbde44ad9561aa766b95d3cb9be40c67efa79 | |
parent | 8022fd9a5c43daf16f5409a9a6b14f4ac762763b (diff) |
Doc: Use QDoc QML commands to document Qbs language items
Task-number: QBS-1245
Change-Id: I470a629312b1c65ea9e51c603607c486115a304c
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
30 files changed, 1189 insertions, 998 deletions
diff --git a/doc/appendix/qbs-porting.qdoc b/doc/appendix/qbs-porting.qdoc index 9b0b316a9..91596c89c 100644 --- a/doc/appendix/qbs-porting.qdoc +++ b/doc/appendix/qbs-porting.qdoc @@ -56,7 +56,8 @@ \section3 console - Set the \l{Product Item}{consoleApplication} property to \c true for the + Set the \l{Product::consoleApplication}{product.consoleApplication} property + to \c true for the \l{Application Item}{Application}, \l{CppApplication Item}{CppApplication}, or \l{QtApplication Item}{QtApplication} item. For example: @@ -73,8 +74,8 @@ This qmake variable has no direct equivalent in \QBS. Instead, the build order is determined by implicit and explicit dependencies between products. - To add an explicit dependency, add a \l{Depends Item}{Depends item} to a - \l{Product Item}{product}: + To add an explicit dependency, add a \l{Depends} item to a + \l{Product}{product}: \code CppApplication { @@ -89,8 +90,8 @@ \section3 qt In qmake, the Qt dependency is implicit, whereas in \QBS it is not. - If \c {CONFIG -= qt}, add a \l{Depends Item}{Depends item} to specify that - the \l{Product Item}{product} depends on the \l{Module cpp}{cpp module}: + If \c {CONFIG -= qt}, add a \l{Depends} item to specify that + the \l{Product}{product} depends on the \l{Module cpp}{cpp module}: \code Product { @@ -100,7 +101,7 @@ \section2 DEFINES - Set the \l{Module cpp}{cpp.defines} property for the \l{Product Item}{product}. + Set the \l{Module cpp}{cpp.defines} property for the \l{Product}{product}. \note To reference \c cpp.defines, you must specify a dependency on the \l{Module cpp}{cpp} module. @@ -145,8 +146,8 @@ \section2 HEADERS, SOURCES, FORMS, RESOURCES - Include header, source, form, and resource files as values of the \c files - property of the \l{Product Item}{product}: + Include header, source, form, and resource files as values of + \l{Product::files}{product.files} property: \code QtApplication { @@ -155,14 +156,14 @@ } \endcode - \QBS uses \l{FileTagger Item}{file taggers} to figure out what kind of file + \QBS uses \l{FileTagger}{file taggers} to figure out what kind of file it is dealing with. \section2 ICON - There is no direct equivalent in \QBS. If you add a \l{Depends Item} + There is no direct equivalent in \QBS. If you add a \l{Depends} {dependency} to the \l{Module ib}{ib module} and add the \c .xcassets - directory as a value of the \c files property of the \l{Product Item} + directory as a value of the \c files property of the \l{Product} {product}, \QBS takes care of setting the application icon automatically when building for Apple platforms: @@ -200,8 +201,7 @@ \section2 LIBS - For libraries that are part of the project, use \l{Depends Item} - {Depends items}. + For libraries that are part of the project, use \l{Depends} items. To pull in external libraries, use the \l{Module cpp}{cpp.libraryPaths} property for the Unix \c -L (library path) flags and the @@ -219,7 +219,7 @@ \section2 OUT_PWD - Use the \c product.buildDirectory property of the \l{Product Item}{product} + Use the \c product.buildDirectory property of the \l{Product}{product} to refer to the base output directory of the generated artifacts. \section2 PWD @@ -229,18 +229,18 @@ \section2 _PRO_FILE_ Corresponds to the file-scope variable \c filePath when used in a - \l{Project Item}{project} or \l{Product Item}{product}. + \l{Project}{project} or \l{Product}{product}. \section2 _PRO_FILE_PWD_ Corresponds to the \c sourceDirectory property of a - \l{Project Item}{project} or \l{Product Item}{product}. + \l{Project}{project} or \l{Product}{product}. \section2 QMAKE_ASSET_CATALOGS - Add a \l{Depends Item}{dependency} to the \l{Module ib}{ib module} and add + Add a \l{Depends}{dependency} to the \l{Module ib}{ib module} and add the \c .xcassets directory as a value of the \c files property of the - \l{Product Item}{product}: + \l{Product}{product}: \code Application { @@ -289,7 +289,7 @@ \c cpp.objcxxCompilerFlags \endtable - Use \l{Properties Item}{Properties items} or simple conditionals as values + Use \l{Properties} items or simple conditionals as values of the \l{Module qbs}{qbs.buildVariant} property to simulate the \c _DEBUG and\c _RELEASE variants of the qmake variables. @@ -307,7 +307,7 @@ \section2 QMAKE_INFO_PLIST Include the \c info.plist file as a value of the \c files property of the - \l{Product Item}{product} and specify a dependency to the \l{Module bundle} + \l{Product}{product} and specify a dependency to the \l{Module bundle} {bundle} module: \code @@ -344,7 +344,7 @@ \section2 QMAKE_LFLAGS - Set the \l{Module cpp}{cpp.linkerFlags} property for the \l{Product Item} + Set the \l{Module cpp}{cpp.linkerFlags} property for the \l{Product} {product}. \section2 QMAKE_{MACOSX,IOS,TVOS,WATCHOS}_DEPLOYMENT_TARGET @@ -372,17 +372,16 @@ \section2 QMAKE_RPATHDIR - Set the \l{Module cpp}{cpp.rpaths} property for the \l{Product Item} - {product}. + Set the \l{Module cpp}{cpp.rpaths} property for the \l{Product}{product}. \section2 QMAKE_SONAME_PREFIX - Use the \l{Module cpp}{cpp.sonamePrefix} property for the \l{Product Item} + Use the \l{Module cpp}{cpp.sonamePrefix} property for the \l{Product} {product}. \section2 QML_IMPORT_PATH - Used only for Qt Creator QML syntax highlighting. Inside a \l{Product Item} + Used only for Qt Creator QML syntax highlighting. Inside a \l{Product} {Product}, \l{Application Item}{Application}, \l{CppApplication Item} {CppApplication}, or \l{QtApplication Item}{QtApplication}, create a \c qmlImportPaths property: @@ -396,7 +395,7 @@ \section2 QT - Add a \l{Depends Item}{Depends item} to the \l{Product Item}{product} that + Add a \l{Depends} item to the \l{Product}{product} that specifies the dependencies to \l{Qt Modules}{Qt modules}. For example: \code @@ -431,19 +430,19 @@ \section2 RC_FILE Add Windows resource files to the value of the \c files property for the - \l{Product Item}{product}. + \l{Product}{product}. \section2 TARGET Use the \c targetName property to specify the base file name of target - artifacts of the \l{Product Item}{product}. + artifacts of the \l{Product}{product}. \section2 TEMPLATE \section3 app Use \l{Application Item}{Application} or \l{CppApplication Item} - {CppApplication} as the \l{Product Item}{product}: + {CppApplication} as the \l{Product}{product}: \code CppApplication { @@ -466,7 +465,7 @@ \section3 lib Use either \l{DynamicLibrary Item}{DynamicLibrary} or \l{StaticLibrary Item} - {StaticLibrary} as the \l{Product Item}{product}, depending on whether the + {StaticLibrary} as the \l{Product}{product}, depending on whether the value of \c CONFIG in the .pro file is \c shared or \c static. For example, if the value is \c shared: @@ -480,7 +479,7 @@ \section3 subdirs - In a \l{Project Item}{Project item}, specify subdirectories as values of the + In a \l{Project} item, specify subdirectories as values of the \c references property: \code diff --git a/doc/config/macros.qdocconf b/doc/config/macros.qdocconf index 57ff72747..dca83db1c 100644 --- a/doc/config/macros.qdocconf +++ b/doc/config/macros.qdocconf @@ -1,2 +1,4 @@ macro.QBS = "Qbs" macro.qbsversion = $QBS_VERSION +macro.defaultvalue = "Default:" +macro.nodefaultvalue = "Default: Undefined" diff --git a/doc/howtos.qdoc b/doc/howtos.qdoc index 1334543fb..065553d53 100644 --- a/doc/howtos.qdoc +++ b/doc/howtos.qdoc @@ -68,7 +68,7 @@ \section1 How do I make my app build against my library? This is achieved by introducing a \e dependency between the two products using the - \l{Depends Item}{Depends item}. Here is a simple, but complete example: + \l{Depends} item. Here is a simple, but complete example: \code import qbs Project { @@ -93,16 +93,16 @@ \endcode The product \c the-lib is a dynamic library. It expects other products to build against it, and - for that purpose, it exports an include path (via an \l{Export Item}{Export item}), so that the + for that purpose, it exports an include path (via an \l{Export} item), so that the source files in these products can include the library's header file. The product \c the-app is an application that expresses its intent to link against \c the-lib by declaring a dependency on it. Now \c main.cpp can include \c lib.h (because of the exported include path) and the application binary will link against the library (because the linker - \l{Rule Item}{rule} in the \l{Module cpp}{cpp module} considers library dependencies as inputs). + \l{Rule}{rule} in the \l{Module cpp}{cpp module} considers library dependencies as inputs). \note In a non-trivial project, the two products would not be defined in the same file. Instead, you would put them into files of their own and use the - \l{Project Item}{Project item}'s \c references property to pull them into the project. + \l{Project::references}{project.references} property to pull them into the project. The product definitions would stay exactly the same. In particular, their location in the project tree is irrelevant to the relationship between them. @@ -212,12 +212,12 @@ \section1 How do I apply C/C++ preprocessor macros to only a subset of the files in my product? - Use a \l{Group Item}{Group item} to define a subset of project files. To add + Use a \l{Group} item to define a subset of project files. To add macros within the group, you need to use the \c outer.concat property, because you are adding macros to those specified in the outer scope. In the following example, \c MACRO_EVERYWHERE is defined for all files in - the \l{Product Item}{Product} unless a \c Group overrides the macro, whereas + the \l{Product} unless a Group overrides the macro, whereas \c MACRO_GROUP is only defined for \c groupFile.cpp. \code @@ -234,7 +234,7 @@ The \c cpp.defines statements inside a \c Group only apply to the files in that \c Group, and therefore you cannot use a \c Group to include a bunch of files and globally visible macros. The macros must be specified in a - \l{Properties Item}{Properties item} at the same level as the \c Group if + \l{Properties} item at the same level as the \c Group if they need to be visible to files outside the \c Group: \code diff --git a/doc/qbs.qdoc b/doc/qbs.qdoc index e4fdd12f9..1bb4ee3af 100644 --- a/doc/qbs.qdoc +++ b/doc/qbs.qdoc @@ -154,15 +154,15 @@ for extra flexibility. \QBS builds applications based on the information in a project file. Each - project file specifies one \l{Project Item}{project} that can contain - several \l{Product Item}{products}. You specify the type of the product, + project file specifies one \l{Project}{project} that can contain + several \l{Product}{products}. You specify the type of the product, such as an \e application, and the dependencies the product has on other products. - The product type determines the set of \l{Rule Item}{rules} that \QBS + The product type determines the set of \l{Rule}{rules} that \QBS applies to produce artifacts from input files. The input files can be - divided into \l{Group Item}{groups} according to their type or purpose, for - example. A group can also be used to attach \l{Properties Item}{properties} + divided into \l{Group}{groups} according to their type or purpose, for + example. A group can also be used to attach \l{Properties}{properties} to products. The following is an example of a minimal project file that specifies the @@ -371,7 +371,7 @@ There is no rule in the current context that produces \c .cpp files, but we have defined \c .cpp files as inputs for the product. When we added a dependency on the \c cpp module, that dependency also pulled in another \QBS - primitive called the \l{FileTagger Item}{file tagger}. The file tagger + primitive called the \l{FileTagger}{file tagger}. The file tagger looked for files matching the pattern \c *.cpp, and then applied the \c cpp tag to those input files: @@ -794,7 +794,7 @@ \title Language Introduction \QBS uses project files (*.qbs) to describe the contents of a project. - A project contains one or more \l{Product Item}{products}. A product is the target of a build + A project contains one or more \l{Product}{products}. A product is the target of a build process, typically an application, library or maybe a tar ball. \note \QBS source files are assumed to be UTF-8 encoded. @@ -1210,7 +1210,7 @@ You can define rules in your own module to be provided along with your project. Or you can put a rule directly into your project file. - For more information, see \l{Rule Item}. + For more information, see \l{Rule}. */ @@ -1377,9 +1377,9 @@ To introduce a custom module \c mymodule, create a directory \c{search-path/modules/mymodule/}. \note Module names are case-sensitive, and this also goes for the corresponding directory name. - Then, put a file containing an instance of the \l{Module Item} in there and give it the \c{.qbs} + Then, put a file containing an instance of the \l{Module} in there and give it the \c{.qbs} extension. This module will be pulled in if a - \l{Product Item}{product} declares a \l{Depends Item}{dependency} on \c mymodule. + \l{Product}{product} declares a \l{Depends}{dependency} on \c mymodule. \section1 Custom Items @@ -1498,14 +1498,14 @@ The properties to which the limitation applies includes but is not limited to: \list - \li \l{Product Item}{Product}.name + \li \l{Product::name}{product.name} \li \l{Module bundle}{bundle}.isBundle \endlist If a simple workaround is possible in a particular case (for example, - varying \c Product.targetName across configuration instead of - \c Product.name), the generator will typically suggest it in the error - message. + varying \l{Product::targetName}{product.targetName} across configuration + instead of \l{Product::name}{product.name}, the generator will typically + suggest it in the error message. */ /*! @@ -1535,8 +1535,9 @@ \note The implementation details around multiplexing are subject to change. - Product multiplexing works by examining a special property on the - \l{Product Item}{Product} item called \c multiplexByQbsProperties, which can + Product multiplexing works by examining the + \l{Product::multiplexByQbsProperties}{product.multiplexByQbsProperties} + property, which can be set to the list of properties your product should multiplex over. For example, \c multiplexByQbsProperties might contain two strings, \c "architectures" and \c "buildVariants". \QBS evaluates the values of @@ -1545,7 +1546,8 @@ all the possible configurations of the product: \c {(x86, debug)}, \c {(x86, release)}, \c {(x86_64, debug)}, and \c {(x86_64, release)}. - If the product’s \c aggregate property is \c true, the product will also be + If the \l{Product::aggregate}{product.aggregate} property is \c true, the + product will also be built a fifth time, with the values of the multiplexed properties left undefined. The aggregate product will have an automatic dependency on the original four instances of the product, allowing it to collect their output diff --git a/doc/reference/cli/builtin/cli-build.qdoc b/doc/reference/cli/builtin/cli-build.qdoc index dd0489eb8..ce4fab160 100644 --- a/doc/reference/cli/builtin/cli-build.qdoc +++ b/doc/reference/cli/builtin/cli-build.qdoc @@ -43,8 +43,8 @@ Builds projects in one or more configurations. - You can specify \l{Project Item}{project}, \l{Product Item}{product}, or - \l{List of Modules}{module} properties, as well as a \l{Profile Item} + You can specify \l{Project}{project}, \l{Product}{product}, or + \l{List of Modules}{module} properties, as well as a \l{Profile} {profile} separately for each configuration. This is the default command. diff --git a/doc/reference/cli/builtin/cli-clean.qdoc b/doc/reference/cli/builtin/cli-clean.qdoc index 1aa07a802..f87270825 100644 --- a/doc/reference/cli/builtin/cli-clean.qdoc +++ b/doc/reference/cli/builtin/cli-clean.qdoc @@ -41,7 +41,7 @@ \section1 Description - Removes build \l{Artifact Item}{artifacts} for the specified build + Removes build \l{Artifact}{artifacts} for the specified build configuration. \section1 Options diff --git a/doc/reference/cli/builtin/cli-resolve.qdoc b/doc/reference/cli/builtin/cli-resolve.qdoc index e8a239942..1743eb55f 100644 --- a/doc/reference/cli/builtin/cli-resolve.qdoc +++ b/doc/reference/cli/builtin/cli-resolve.qdoc @@ -41,7 +41,7 @@ \section1 Description - Resolves a \l{Project Item}{project} in one or more configurations. Run this + Resolves a \l{Project}{project} in one or more configurations. Run this command to change the properties of an existing build. \section1 Options diff --git a/doc/reference/cli/builtin/cli-update-timestamps.qdoc b/doc/reference/cli/builtin/cli-update-timestamps.qdoc index f1bb016b9..39faddfed 100644 --- a/doc/reference/cli/builtin/cli-update-timestamps.qdoc +++ b/doc/reference/cli/builtin/cli-update-timestamps.qdoc @@ -41,8 +41,8 @@ \section1 Description - Updates the timestamps of all build \l{Artifact Item}{artifacts}, causing - the next builds of the \l{Project Item}{project} to do nothing until source + Updates the timestamps of all build \l{Artifact}{artifacts}, causing + the next builds of the \l{Project}{project} to do nothing until source files are updated again. This command is useful if you know that the current changes to source files diff --git a/doc/reference/cli/cli-options.qdocinc b/doc/reference/cli/cli-options.qdocinc index 73cab922c..e52b422dc 100644 --- a/doc/reference/cli/cli-options.qdocinc +++ b/doc/reference/cli/cli-options.qdocinc @@ -31,7 +31,7 @@ \section2 \c --all-products - Processes all \l{Product Item}{products}, even if their \c builtByDefault + Processes all \l{Product}{products}, even if their \c builtByDefault property is \c false. //! [all-products] @@ -82,10 +82,10 @@ \section2 \c --check-outputs - Forces transformer output \l{Artifact Item}{artifact} checks. + Forces transformer output \l{Artifact}{artifact} checks. - Verifies that the output artifacts declared by \l{Rule Item}{rules} in the - \l{Project Item}{project} are actually created. + Verifies that the output artifacts declared by \l{Rule}{rules} in the + \l{Project}{project} are actually created. //! [check-outputs] @@ -185,7 +185,7 @@ \section2 \c --force-probe-execution - Forces re-execution of all \l{Probe Item}{Probe items}' configure scripts, + Forces re-execution of all \l{Probe} items' configure scripts, rather than using the cached data. //! [force-probe-execution] @@ -278,7 +278,7 @@ Possible values are: \list - \li \c defaultProfile is the default \l{Profile Item}{profile} to use + \li \c defaultProfile is the default \l{Profile}{profile} to use if a profile is not specified \li \c preferences accepts build preferences as second-level keys \li \c profiles accepts profile names as second-level keys @@ -357,7 +357,7 @@ \section2 \c {--products|-p <name>[,<name>...]} - Takes only the \l{Product Item}{products} specified by \c <name> and their + Takes only the \l{Product}{products} specified by \c <name> and their dependencies into account. //! [products-specified] @@ -382,7 +382,7 @@ \section2 \c {--settings-dir <directory>} - Reads all settings (such as \l{Profile Item}{profile} information) from the + Reads all settings (such as \l{Profile}{profile} information) from the specified \c <directory>. If the directory does not exist, it will be created. @@ -400,8 +400,8 @@ \section2 \c --setup-run-env-config - A comma-separated list of strings. They will show up in the \c config parameter - of all \c setupRunEnvironment scripts. See the \l{Module Item}{Module item} for details. + A comma-separated list of strings. They will show up in the \c config + parameter of all \l{Module::}{setupRunEnvironment} scripts. //! [setup-run-env-config] diff --git a/doc/reference/commands.qdoc b/doc/reference/commands.qdoc index ce2330ffc..8f0392c32 100644 --- a/doc/reference/commands.qdoc +++ b/doc/reference/commands.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2017 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of Qbs. @@ -45,7 +45,7 @@ \code var insaneCommand = new Command("rm", ["-r", "/"]); \endcode - The \l{Rule Item} documentation shows a \c Command in context. + The \l{Rule} item documentation shows a \c Command in context. \section1 JavaScriptCommand @@ -65,7 +65,7 @@ \c outputs are available. As the example shows, arbitrary properties can be set on the command object and then used within the source code. This technique is typically used to forward values from the prepare script to the command. - The \l{Rule Item} documentation shows a \c JavaScriptCommand in context. + The \l{Rule} item documentation shows a \c JavaScriptCommand in context. \section1 Properties diff --git a/doc/reference/items/language/artifact.qdoc b/doc/reference/items/language/artifact.qdoc index 6c4a8d37c..3552ef57e 100644 --- a/doc/reference/items/language/artifact.qdoc +++ b/doc/reference/items/language/artifact.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2017 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of Qbs. @@ -26,21 +26,23 @@ ****************************************************************************/ /*! \contentspage list-of-language-items.html - \page artifact-item.html - \nextpage depends-item.html + \nextpage Depends \ingroup list-of-language-items + \qmltype Artifact + \inqmlmodule QbsLanguageItems \ingroup list-of-items \keyword QML.Artifact - \title Artifact Item - \brief Describes a file produced by a \c Rule. + \brief Describes a file produced by a Rule. - An \c Artifact represents a single file produced by a \l{Rule Item}{Rule}. + An Artifact represents a single file produced by a \l{Rule}. - For example, if a rule produces three files, it needs to contain three Artifact items. + For example, if a rule produces three files, it needs to contain three + Artifact items. + + In addition to Artifact properties, you can set module properties within an + Artifact item, as follows: - In addition to the properties listed in the section below, you can also set module properties - within an \c Artifact item: \code Artifact { filePath: "somefile.cpp" @@ -50,36 +52,36 @@ } \endcode - \section1 Artifact Properties + \note The code on the right-hand side of Artifact properties has access to + the set of input artifacts. That is, it can refer to the \c inputs map and, + if the rule is not a multiplex rule, the \c input variable. +*/ + +/*! + \qmlproperty bool Artifact::alwaysUpdated + + Setting this property to \c false means the file is not necessarily always + written to by any command run by the rule. The timestamps of such artifacts + are therefore not checked to find out whether they are up to date. + Consequently, if all artifacts of a rule have this property set to \c false, + the commands of the rule are always executed. + + \defaultvalue \c true +*/ - \note The code on the right-hand side of these properties has access to the set of input - artifacts, that is, it can refer to the \c inputs map and, if the rule is not a multiplex rule, - the \c input variable. +/*! + \qmlproperty string Artifact::filePath + + The file path of the target artifact. + + \nodefaultvalue +*/ + +/*! + \qmlproperty stringList Artifact::fileTags - \table - \header - \li Property - \li Type - \li Default - \li Description - \row - \li alwaysUpdated - \li bool - \li true - \li Setting this to \c false means the file is not necessarily always written to by any - command run by the rule. The timestamps of such artifacts are therefore not checked to - find out whether they are up to date. Consequently, if all artifacts of a rule have this - property set to \c false, the commands of the rule are always executed. - \row - \li filePath - \li string - \li undefined - \li The file path of the target artifact. - \row - \li fileTags - \li list - \li empty list - \li The tags to attach to the target file. These can then be matched by a rule. - \endtable + A list of tags to attach to the target file. These can then be matched by a + \l{Rule}. + \defaultvalue An empty list */ diff --git a/doc/reference/items/language/depends.qdoc b/doc/reference/items/language/depends.qdoc index 5107f3f5b..77313fe61 100644 --- a/doc/reference/items/language/depends.qdoc +++ b/doc/reference/items/language/depends.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2017 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of Qbs. @@ -26,17 +26,16 @@ ****************************************************************************/ /*! \contentspage list-of-language-items.html - \previouspage artifact-item.html - \page depends-item.html - \nextpage export-item.html - \ingroup list-of-language-items + \previouspage Artifact + \nextpage Export + \qmltype Depends + \inqmlmodule QbsLanguageItems \ingroup list-of-items \keyword QML.Depends - \title Depends Item \brief Represents dependencies between products and modules. - A \c Depends item can appear inside a \l{Product Item} or \l{Module Item}. + A Depends item can appear inside a \l{Product} or \l{Module} item. For example, the following product will load the \c cpp module. In addition, it will try to load modules that may or may not exist, and in the latter case use a fallback. @@ -81,83 +80,108 @@ \endcode Dependency parameters are a special type of property that can only be set - within \c{Depends} and \c{Parameters} items. Dependency parameters are + within Depends and \l [QML] {Parameters} items. Dependency parameters are declared in the modules they belong to. In the example above, the \c{cpp} module declares the parameter \c{link}. The \c{Depends} item for \e{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. + + \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 \c present property will be available for querying, and it will be + set to \c false. + + \defaultvalue \c true +*/ + +/*! + \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 \c profiles property of the \l{Module qbs}{qbs module} 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 - \section1 Depends Properties - - \table - \header - \li Property - \li Type - \li Default - \li Description - \row - \li condition - \li bool - \li true - \li Determines whether the dependency will actually be applied. - \row - \li versionAtLeast - \li string - \li undefined - \li 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. - \row - \li versionBelow - \li string - \li undefined - \li 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. - \row - \li productTypes - \li stringList - \li undefined - \li 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 \c Depends item. - This property is mutually exclusive with the \c name and \c submodules properties. - The \c required and \c profiles properties are ignored if \c productTypes is set. - \row - \li required - \li bool - \li \c true - \li 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 \c present property will be - available for querying, and it will be set to \c false. - \row - \li name - \li string - \li undefined - \li The name of the dependent product or module. - \row - \li profiles - \li stringList - \li \c{undefined} - \li 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 \c profiles property of the \l{Module qbs}{qbs module} for more information. - An empty list means a dependency on all instances of the product with the given name, - regardless of their profile. - \row - \li limitToSubProject - \li bool - \li \c false - \li If \c productTypes is set and this property is \c true, then only products that - are in the same sub-project as the product containing the \c Depends item are - considered. - \row - \li submodules - \li stringList - \li undefined - \li The submodules of \c module to depend on, if applicable. - \endtable + A list of submodules of the module to depend on, if applicable. + \nodefaultvalue */ diff --git a/doc/reference/items/language/export.qdoc b/doc/reference/items/language/export.qdoc index 74e3cc4c4..b4b31ad1b 100644 --- a/doc/reference/items/language/export.qdoc +++ b/doc/reference/items/language/export.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2017 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of Qbs. @@ -26,20 +26,19 @@ ****************************************************************************/ /*! \contentspage list-of-language-items.html - \previouspage depends-item.html - \page export-item.html - \nextpage filetagger-item.html - \ingroup list-of-language-items + \previouspage Depends + \nextpage FileTagger + \qmltype Export + \inqmlmodule QbsLanguageItems \ingroup list-of-items \keyword QML.Export - \title Export Item \brief Exports dependencies and properties to other products. - An \c Export item can appear inside a \l{Product Item}. It defines a Module with the product's - name that can be depended on by other products. - The properties attached to the Export item will take effect in all products that depend on the - product inside which the Export item is defined. + An Export item can appear inside a \l{Product} item. It defines a \l{Module} + with the product's name that can be depended on by other products. + The properties attached to the Export item will take effect in all products + that depend on the product inside which the Export item is defined. As an example, consider these two products: \code Product { diff --git a/doc/reference/items/language/filetagger.qdoc b/doc/reference/items/language/filetagger.qdoc index 55fbb4ac9..03790e724 100644 --- a/doc/reference/items/language/filetagger.qdoc +++ b/doc/reference/items/language/filetagger.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2017 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of Qbs. @@ -26,18 +26,17 @@ ****************************************************************************/ /*! \contentspage list-of-language-items.html - \previouspage export-item.html - \page filetagger-item.html - \nextpage group-item.html - \ingroup list-of-language-items + \previouspage Export + \nextpage Group + \qmltype FileTagger + \inqmlmodule QbsLanguageItems \ingroup list-of-items \keyword QML.FileTagger - \title FileTagger Item \brief Assigns file tags to files. This item assigns file tags to files. - The FileTagger item can appear in \c{Product} items or \c{Module} items. + The FileTagger item can appear in \l{Product} items or \l{Module} items. For every source artifact that has no file tag, \QBS will search for a FileTagger with a pattern that matches the file name of the source @@ -48,10 +47,12 @@ same highest priority are taken into account and their file tags are accumulated. - The FileTagger item can be attached to a product or a module. - In the latter case, its effect is the same as if it had been attached to all products having - a dependency on the respective module. For instance, the cpp module of \QBS has, among others, - the following file tagger: + The FileTagger item can be attached to a product or a module. In the latter + case, its effect is the same as if it had been attached to all products + having a dependency on the respective module. For instance, the + \l{Module cpp}{cpp} module of \QBS has, among others, the following file + tagger: + \code FileTagger { patterns: "*.cpp" @@ -59,12 +60,14 @@ } \endcode - As a result, the "cpp" tag is automatically attached to all files ending with ".cpp" in - products depending on the cpp module. This causes them to be compiled, because a C++ - compiler rule has "cpp" in its list of matching input tags. + As a result, the \c "cpp" tag is automatically attached to all files ending + with \c ".cpp" in products depending on the \c cpp module. This causes them + to be compiled, because a C++ compiler rule has \c "cpp" in its list of + matching input tags. - File taggers are disabled if file tags are set explicitly in a product or group. - For example, the "cpp" tag is not attached to the cpp files in the following product: + File taggers are disabled if file tags are set explicitly in a \l{Product} + {product} or \l{Group}{group}. For example, the \c "cpp" tag is not attached + to the \c .cpp files in the following product: \code Product { @@ -75,35 +78,33 @@ } } \endcode +*/ + +/*! + \qmlproperty stringList FileTagger::patterns + \since Qbs 1.0 + + A list of patterns to match against. Supports the usual wildcards '*', '?' + and '[]'. + + Neither the list itself nor any of its elements may be empty. +*/ + +/*! + \qmlproperty list FileTagger::fileTags + \since Qbs 1.0 + + Tags to attach to a product's files. These can then be matched by a rule. + + \defaultvalue An empty list +*/ + +/*! + \qmlproperty int FileTagger::priority + \since Qbs 1.10 + + The priority of the FileTagger. A higher numerical value means a higher + priority. - \section1 FileTagger Properties - - \table - \header - \li Property - \li Type - \li Default - \li Since - \li Description - \row - \li patterns - \li stringList - \li none - \li 1.0 - \li The patterns to match against. Supports the usual wildcards '*', '?' and '[]'. - Neither the list itself nor any of its elements may be empty. - \row - \li fileTags - \li list - \li empty list - \li 1.0 - \li Tags to attach to a product's files. These can then be matched by a rule. - \row - \li priority - \li int - \li 0 - \li 1.10 - \li The priority of the FileTagger. A higher numerical value means - higher priority. - \endtable + \defaultvalue 0 */ diff --git a/doc/reference/items/language/group.qdoc b/doc/reference/items/language/group.qdoc index 357780e0a..dae647060 100644 --- a/doc/reference/items/language/group.qdoc +++ b/doc/reference/items/language/group.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2017 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of Qbs. @@ -27,17 +27,18 @@ /*! \contentspage list-of-language-items.html - \previouspage filetagger-item.html - \page group-item.html - \nextpage module-item.html - \ingroup list-of-language-items + \previouspage FileTagger + \nextpage Module + \qmltype Group + \inqmlmodule QbsLanguageItems \ingroup list-of-items \keyword QML.Group - \title Group Item \brief Groups files in a product. - This item is attached to a product and used to group files that have something in common. + This item is attached to a \l{Product}{product} and used to group files that + have something in common. + For example: \code @@ -94,85 +95,112 @@ } \endcode - Groups may also appear in modules, which causes the respective sources to be added to the - products depending on said module (except if the \c filesAreTargets property is set, see below). - Groups can be nested. In this case, child groups inherit the module properties and file - tags as well as the prefix of their parent group. The condition of a child group gets logically + Groups may also appear in \l{Module}{modules}, which causes the respective + sources to be added to the products depending on the said module, unless + the \l{filesAreTargets} property is set. + + Groups can be nested. In this case, child groups inherit the module + properties and \l{FileTagger}{file tags} as well as the prefix of their + parent group. The \l{condition} of a child group gets logically ANDed with the one of its parent group. +*/ + +/*! + \qmlproperty string Group::name + + The name of the group. Not used internally; mainly useful for IDEs. + + \defaultvalue "Group x", where x is a unique number among all the + groups in the product. +*/ + +/*! + \qmlproperty list Group::files + + The files in the group. Mutually exclusive with \l{fileTagsFilter}. + Relative paths are resolved using the parent directory of the file + that contains the Group item. However, if the \l{prefix} property is set to + an absolute path, then that one becomes the base directory. + + \defaultvalue An empty list +*/ + +/*! + \qmlproperty bool Group::filesAreTargets + + If this property is \c true and the group is in a \l{Module}, the files in the + group will not become source artifacts of the product that depends on the module. + Instead, they are treated like target artifacts of products. That is, they will be + matched against the \l{Rule::inputsFromDependencies}{inputsFromDependencies} + file tag list of \l{Rule}{rules} in products that depend on the module. + + \defaultvalue \c false +*/ + +/*! + \qmlproperty string Group::prefix + + A string to prepend to all files. Slashes are allowed and have directory + semantics. + + \defaultvalue The prefix of the parent group if one exists, otherwise empty. +*/ + +/*! + \qmlproperty list Group::fileTagsFilter + + List of \l{Artifact::fileTags}{artifact.fileTags} to match. Any properties + set in this group will be applied to the product's artifacts whose file tags + match the ones listed here. + + The file tags that the group's \l{fileTags} property specifies will + be added to the matching artifacts. + + This property is mutually exclusive with \l{files}. + + \defaultvalue An empty list +*/ + +/*! + \qmlproperty bool Group::condition + + Determines whether the files in the group are actually considered part of + the project. + + \defaultvalue \c true +*/ + +/*! + \qmlproperty list Group::fileTags + + A list of file tags to attach to the group's files. These can then be + matched by a \l{Rule}{rule}. + + \note \l{FileTagger}{File taggers} are never applied to a file that has this + property set. + + \defaultvalue An empty list +*/ + +/*! + \qmlproperty bool Group::overrideTags + + Determines how tags on files that are listed both at the top level of + a product (or the parent group, if there is one) and a group are handled. + If this property is \c true, then the \l{FileTagger}{file tags} set via the + group replace the ones set via the product or parent group. + If it is \c false, the \e {group tags} are added to the \e {parent tags}. + + This property is ignored if \l{fileTagsFilter} is set. + + \defaultvalue \c true +*/ + +/*! + \qmlproperty list Group::excludeFiles + + A list of files that are \e subtracted from the files list. Useful when + using wildcards. - \section1 Group Properties - - \table - \header - \li Property - \li Type - \li Default - \li Description - \row - \li name - \li string - \li "Group x", where x is a unique number among all the groups in the product - \li The name of the group. Not used internally; mainly useful for IDEs. - \row - \li files - \li list - \li empty list - \li The files in the group. Mutually exclusive with fileTagsFilter. - Relative paths are resolved using the parent directory of the file - that contains the \c Group item. However, if the \c prefix property is set to an - absolute path, then that one becomes the base directory. - \row - \li filesAreTargets - \li bool - \li false - \li If this property is \c true and the group is in a module, then the files in the - group will not become source artifacts of the product that depends on the module. - Instead, they are treated like target artifacts of products, that is, they will be - matched against the \c inputsFromDependencies file tag list of \l{Rule Item}{rules} - in products that depend on the module. - \row - \li prefix - \li string - \li prefix of the parent group if one exists, otherwise empty - \li A string to prepend to all files. Slashes are allowed and have directory semantics. - \row - \li fileTagsFilter - \li list - \li empty list - \li Artifact file tags to match. Any properties set in this group will be applied - to the product's artifacts whose file tags intersect with the ones - listed here. - - The file tags that the group's \c{fileTags} property specifies will - be added to the matching artifacts. - - This property is mutually exclusive with \c{files}. - \row - \li condition - \li bool - \li true - \li Determines whether the files in the group are actually considered part of the project. - \row - \li fileTags - \li list - \li empty list - \li Tags to attach to the group's files. These can then be matched by a rule. - Note that file taggers are never applied to a file that has this property set. - \row - \li overrideTags - \li bool - \li true - \li Determines how tags on files that are listed both at the top level of - a product (or the parent group, if there is one) and a group are handled. - If this property is true, then the file tags set via the group - replace the ones set via the product or parent group. - If it is false, the "group tags" are added to the "parent tags". - - This property is ignored if \c{fileTagsFilter} is set. - \row - \li excludeFiles - \li list - \li empty list - \li For use with wildcards; the files in this list are "subtracted" from the files list. - \endtable + \defaultvalue An empty list */ diff --git a/doc/reference/items/language/module.qdoc b/doc/reference/items/language/module.qdoc index 1362b8c00..fb2238e0c 100644 --- a/doc/reference/items/language/module.qdoc +++ b/doc/reference/items/language/module.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2017 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of Qbs. @@ -26,20 +26,19 @@ ****************************************************************************/ /*! \contentspage list-of-language-items.html - \previouspage group-item.html - \page module-item.html - \nextpage parameter-item.html - \ingroup list-of-language-items + \previouspage Group + \nextpage Parameter + \qmltype Module + \inqmlmodule QbsLanguageItems \ingroup list-of-items \keyword QML.Module - \title Module Item \brief Represents a collection of properties and items that can be loaded into a product. - A \c Module item is a collection of properties and language items that are used for building a - product if the product has a \l{Depends Item}{dependency} on the module. + A Module item is a collection of properties and language items that are used for building a + product if the product has a \l{Depends}{dependency} on the module. The following (somewhat artificial) module pre-processes text files by removing certain - characters from them. The module's name is \a{txt_processor}. + characters from them. The module's name is \c{txt_processor}. \code import qbs @@ -79,7 +78,7 @@ } \endcode - And this is how a product would use the module: + And this is how a \l{Product} would use the module: \code Product { @@ -96,12 +95,20 @@ Of course, normally the pre-processed files would not be the target artifacts of the product, but rather serve as inputs to a different rule that will often come from a different module. - How you make your own modules available to \QBS is explained - \l{Custom Modules and Items}{here}. + For more information about how you make your own modules available to \QBS, + see \l{Custom Modules and Items}. \section1 Special Property Values - For every property defined in a module, \QBS provides the following special built-in values: + For every property defined in a module, \QBS provides the following special + built-in values: + + \list + \li \l base + \li \l original + \li \l outer + \endlist + \section2 \c base This value is useful when making use of inheritance. It stands for the value of the respective property in the item one level up in the inheritance chain. For instance: @@ -132,8 +139,7 @@ \section2 \c outer This value is used in nested items, where it refers to the value of the respective property - in the surrounding item. It is only valid in \l{Group Item}{groups} and - \l{Properties Item}{Properties items}: + in the surrounding item. It is only valid in \l{Group} and \l{Properties} items: \code Product { Depends { name: "mymodule" } @@ -150,8 +156,8 @@ \section1 Dependency Parameters Modules can declare dependency parameters. Those parameters can be set - within \c{Depends} items. Rules of the module can read the parameters of - dependencies and act accordingly. + within \l{Depends} items. \l{Rule}{Rules} of the module can read the + parameters of dependencies and act accordingly. In the following example, the module \e{foo} declares the parameter \c{ignore}. A dependency to \c{bar} then sets the parameter \c{foo.ignore} @@ -180,74 +186,96 @@ Depends { name: "bar"; foo.ignore: true } } \endcode +*/ + +/*! + \qmlproperty stringList Module::additionalProductTypes + + A list of elements that will be added to the \l{Product::type}{type} + property of a product that has a dependency on the module. + + \defaultvalue \c [] +*/ + +/*! + \qmlproperty bool Module::condition + + Whether the module is enabled. If this property is \c false, the + surrounding Module item will not be considered in the module look-up. + + \defaultvalue \c true +*/ + +/*! + \qmlproperty bool Module::present + \readonly + + This property is \c false if and only if the respective \l{Depends} item had + its \l{Depends::required}{required} property set to \c false and the module + was not found. + + \defaultvalue \c true +*/ + +/*! + \qmlproperty int Module::priority + + The priority of this module instance. If there is more than one module + instance available for a module name, the module with the highest priority + is chosen. + + \defaultvalue 0 +*/ +/*! + \qmlproperty script Module::setupBuildEnvironment + + A script for setting up the environment in which a product is built. + + The code in this script is treated as a function with the signature + \c{function(project, product)}. + + Use the \l{Environment Service}{Environment} functions to alter the + environment. + + The return value of this script is ignored. + + \nodefaultvalue +*/ + +/*! + \qmlproperty script Module::setupRunEnvironment + + A script for setting up the environment in which a product is run. + + The code in this script is treated as a function with the signature + \c{function(project, product, config)}. + + The \c config parameter is a list of arbitrary strings that can be passed + via the \l{run} command. The values supported by specific modules are + listed in their respective documentation. + + Use the \l{Environment Service}{Environment} functions to alter the + environment. + + The return value of this script is ignored. + + \nodefaultvalue +*/ + +/*! + \qmlproperty script Module::validate + + A script that is run after the module is loaded. It can be used to check + property values and throw errors in unexpected cases. The return value is + ignored. + + \nodefaultvalue +*/ + +/*! + \qmlproperty string Module::version - \section1 Module Properties - - \table - \header - \li Property - \li Type - \li Default - \li Description - \row - \li additionalProductTypes - \li string list - \li empty list - \li The elements of this list will be added to the \c type property of a product - that has a dependency on the module. - \row - \li condition - \li bool - \li \c true - \li Controls whether the module is enabled. If this property is \c false, the - surrounding \c Module item will not be considered in the module look-up. - \row - \li present - \li bool - \li \c true - \li This property is read-only. Its value is \c false if and only if the respective - \c Depends item had its \c required property set to \c false and the module was - not found. - \row - \li priority - \li int - \li \c 0 - \li Defines the priority of this module instance. If there is more - than one module instance available for a module name, then - the module with the highest priority is chosen. - \row - \li setupBuildEnvironment - \li script - \li \c undefined - \li Script for setting up the environment in which a product is built. - The code in this script is treated as a function with the signature - \c{function(project, product)}. - Use the \l{Environment Service}{Environment} functions to alter the environment. - The return value of this script is ignored. - \row - \li setupRunEnvironment - \li script - \li \c undefined - \li Script for setting up the environment in which a product is run. - The code in this script is treated as a function with the signature - \c{function(project, product, config)}. - The \c config parameter is a list of arbitrary strings that can be passed via - the \l{run} command. The concrete values supported by specific modules - are listed in their respective documentation. - Use the \l{Environment Service}{Environment} functions to alter the environment. - The return value of this script is ignored. - \row - \li validate - \li script - \li \c undefined - \li Script that is run after the module is loaded. It can be used to check property - values and throw errors in unexpected cases. The return value is ignored. - \row - \li version - \li string - \li \c undefined - \li The module's version. It consists of integer values separated by dots. You can check - for specific values of this property in a \l{Depends item}{Depends} item. - \endtable + The module's version. It consists of integer values separated by dots. You + can check for specific values of this property in a \l{Depends} item. */ diff --git a/doc/reference/items/language/parameter.qdoc b/doc/reference/items/language/parameter.qdoc index da700f3da..c544af2d7 100644 --- a/doc/reference/items/language/parameter.qdoc +++ b/doc/reference/items/language/parameter.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2017 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of Qbs. @@ -26,21 +26,19 @@ ****************************************************************************/ /*! \contentspage list-of-language-items.html - \previouspage module-item.html - \page parameter-item.html - \nextpage parameters-item.html - \ingroup list-of-language-items + \previouspage Module + \nextpage Parameters + \qmltype Parameter + \inqmlmodule QbsLanguageItems \ingroup list-of-items \keyword QML.Parameter - \title Parameter Item \brief Declares a dependency parameter. - The \c{Parameter} item declares a dependency parameter. - This item can only appear within \c{Module} - items and \c{Export} items. + The Parameter item declares a dependency parameter. It can appear only + within \l{Module} and \l{Export} items. - The \c{Parameter} item contains exactly one property declaration. + The Parameter item contains exactly one property declaration. Example: \code @@ -49,6 +47,6 @@ } \endcode - The \l{Module Item#dependency-parameters}{\c{Module} item page} - has more information about dependency parameters. + For more information about dependency parameters, see + \l{Module#dependency-parameters}{Module - Dependency Parameters}. */ diff --git a/doc/reference/items/language/parameters.qdoc b/doc/reference/items/language/parameters.qdoc index afeb9f30e..6a2e779de 100644 --- a/doc/reference/items/language/parameters.qdoc +++ b/doc/reference/items/language/parameters.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2017 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of Qbs. @@ -26,19 +26,17 @@ ****************************************************************************/ /*! \contentspage list-of-language-items.html - \previouspage parameter-item.html - \page parameters-item.html - \nextpage probe-item.html - \ingroup list-of-language-items + \previouspage Parameter + \nextpage Probe + \qmltype Parameters + \inqmlmodule QbsLanguageItems \ingroup list-of-items \keyword QML.Parameters - \title Parameters Item - \brief Defines default values for dependency parameters within - \c{Export} items. + \brief Defines default values for dependency parameters within Export items. - The \c{Parameters} item defines default values for dependency - parameters within \c{Export} items. + The Parameters item defines default values for dependency parameters within + \l{Export} items. Example: \code @@ -62,7 +60,8 @@ Depends { name: "foo"; cpp.link: true } \endcode - The parameters item contains a number of property bindings where - each property must be a \l{Parameter Item}{properly declared} - \l{Module Item#dependency_parameters}{dependency parameter}. + The Parameters item contains a number of property bindings where + each property must be a properly declared dependency parameter. + For more information, see \l{Parameter} and + \l{Module#dependency-parameters}{Module - Dependency Parameters}. */ diff --git a/doc/reference/items/language/probe.qdoc b/doc/reference/items/language/probe.qdoc index d2684b4c2..ec1455b8f 100644 --- a/doc/reference/items/language/probe.qdoc +++ b/doc/reference/items/language/probe.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2017 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of Qbs. @@ -26,17 +26,16 @@ ****************************************************************************/ /*! \contentspage list-of-language-items.html - \previouspage parameters-item.html - \page probe-item.html - \nextpage product-item.html - \ingroup list-of-language-items + \previouspage Parameters + \nextpage Product + \qmltype Probe + \inqmlmodule QbsLanguageItems \ingroup list-of-items \keyword QML.Probe - \title Probe Item \brief Locates files outside the project. - \c Probe items can appear inside \l{Product Item}{products} and \l{Project Item}{projects}. + Probe items can appear inside \l{Product} and \l{Project} items. They are run prior to building, for instance to locate dependent headers, libraries, and other files outside the project directory whose locations are not known ahead of time. Probes can be parameterized via their properties and typically store results in @@ -58,31 +57,28 @@ \note Because Probes often invoke external processes, which is relatively expensive compared to evaluating normal properties, their results are cached. To force re-evaluation - of a Probe, you can supply the \c{--force-probe-execution} command-line option. + of a Probe, you can supply the \c{--force-probe-execution} command-line option + to the \l{build} command. +*/ + +/*! + \qmlproperty bool Probe::condition - \section1 Probe Properties + Determines whether the probe will actually be run. - \table - \header - \li Property - \li Type - \li Default - \li Description - \row - \li condition - \li bool - \li true - \li Determines whether the probe will actually be run. - \row - \li found - \li bool - \li undefined - \li Indicates whether the probe was run successfully. Set by \c configure. - \row - \li configure - \li script - \li undefined - \li Script that is executed when the probe is run. - \endtable + \defaultvalue \c true +*/ + +/*! + \qmlproperty bool Probe::found + + Indicates whether the probe was run successfully. Set by \l{configure}. + + \nodefaultvalue +*/ + +/*! + \qmlproperty script Probe::configure + A script that is executed when the probe is run. */ diff --git a/doc/reference/items/language/product.qdoc b/doc/reference/items/language/product.qdoc index 9574190dc..525311b0d 100644 --- a/doc/reference/items/language/product.qdoc +++ b/doc/reference/items/language/product.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2017 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of Qbs. @@ -26,17 +26,16 @@ ****************************************************************************/ /*! \contentspage list-of-language-items.html - \previouspage probe-item.html - \page product-item.html - \nextpage profile-item.html - \ingroup list-of-language-items + \previouspage Probe + \nextpage Profile + \qmltype Product + \inqmlmodule QbsLanguageItems \ingroup list-of-items \keyword QML.Product - \title Product Item \brief Represents the result of a build process. - A \e product typically represents the result of a build process. It specifies a set of + 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: \code @@ -47,8 +46,9 @@ Depends { name: "cpp" } } \endcode - The \c type property specifies what will be built (an executable). The \c files property specifies - the input files (one C++ source file), and the \c Depends item pulls in the logic from the \c cpp module + The \l{type} property specifies what will be built (an executable). The + \l{files} property specifies the input files (one C++ source file), and the + \l{Depends} item pulls in the logic from the \c 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: @@ -68,148 +68,208 @@ Any property \c prop attached to this item is available in sub-items as \c product.prop, as well as in modules that are loaded from this product. - \section1 Product Properties - - \table - \header - \li Property - \li Type - \li Default - \li Description - \row - \li builtByDefault - \li bool - \li true - \li If false, the product will only be built if this is explicitly requested, - either by listing the product name as an argument to \c --products or by giving - the \c build command the \c --all-products option. - \row - \li condition - \li bool - \li true - \li If false, the product will not be built. - \row - \li name - \li string - \li empty string - \li The name of the product. Used to identify the product in a \c 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. - \div {style="font-size:80%"} - \code - CppApplication { - name: "hello" + "world" - // valid - } - CppApplication { - name: "app_" + qbs.targetOS.join("_") - // invalid - } - \endcode - \enddiv - To change the name of your product's target artifact, modify \c{Product.targetName} - instead. - \row - \li type - \li stringList - \li empty list - \li The file tags matching the product's target artifacts. - \row - \li targetName - \li string - \li \c{name} with illegal file name characters replaced by underscores - \li The base file name of the product's target artifacts. - \row - \li destinationDirectory - \li string - \li product.buildDirectory - \li The directory where the target artifacts will be located. If a relative path is - given, the base directory will be \c project.buildDirectory. - \row - \li files - \li stringList - \li empty list - \li A list of source files. Syntactic sugar to save a \c Group item for simple products. - Relative paths are resolved using the parent directory of the project file - that sets the property. - \row - \li excludeFiles - \li stringList - \li empty list - \li A list of source files not to include. Useful with wildcards. - For more information, see \l {Group Item}. - - \row - \li consoleApplication - \li bool - \li linker-dependent - \li 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. - \row - \li qbsSearchPaths - \li stringList - \li project.qbsSearchPaths - \li See the documentation of the \l {Project Item} property of the same name. - The value set here will be merged with the one inherited from - the project. - \row - \li version - \li string - \li undefined - \li The version number of the product. Used in shared library filenames and generated - Info.plist files in Apple application and framework bundles, for example. - \endtable + \section1 Multiplexing Properties 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. - - \table - \header - \li Property - \li Type - \li Default - \li Description - \row - \li aggregate - \li bool - \li \c{undefined} - \li If \c{true}, an aggregate product will be created that has dependencies on all - multiplex instances of this product. - \row - \li multiplexedType - \li stringList - \li \c{undefined} - \li Specifies the product type for the multiplexed product instances. - \row - \li multiplexByQbsProperties - \li stringList - \li \c{["profiles"]} - \li Specifies which properties of the qbs module will be used for product multiplexing. - Its value must be a subset of \c{["architectures", "buildVariants", "profiles"]}. - \endtable - - The following properties are automatically set by \QBS and cannot be changed by the user: - - \table - \header - \li Property - \li Type - \li Description - \row - \li buildDirectory - \li path - \li The build directory for this product. This is the directory where generated files - are placed. - \row - \li sourceDirectory - \li path - \li The source directory for this product. This is the directory of the file where this - product is defined. - \endtable + Unless multiplexing is desired, they can be left at their default values: + + \list + \li \l{aggregate} + \li \l{multiplexedType} + \li \l{multiplexByQbsProperties} + \endlist + + \note We do not promise backwards compatibility for multiplexing properties + as they are likely to change in future \QBS versions. + + \section1 Read-Only Properties + + The following properties are automatically set by \QBS and cannot be + changed by the user: + + \list + \li \l{buildDirectory} + \li \l{sourceDirectory} + \endlist +*/ + +/*! + \qmlproperty bool Product::builtByDefault + + Determines whether the product will be built. + + If \c false, the product will only be built if this is explicitly requested, + either by listing the product name as an argument to \c --products or by + giving the \l{build} command the \c --all-products option. + + \defaultvalue \c true +*/ + +/*! + \qmlproperty bool Product::condition + + Determines whether the product will be built. + + If \c false, the product will not be built. + + \defaultvalue \c true +*/ + +/*! + \qmlproperty string Product::name + + The name of the product. Used to identify the product in a \l{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. + + \code + CppApplication { + name: "hello" + "world" + // valid + } + CppApplication { + name: "app_" + qbs.targetOS.join("_") + // invalid + } + \endcode + + To change the name of your product's target artifact, modify \l{targetName} + instead. + + \defaultvalue An empty string +*/ + +/*! + \qmlproperty stringList Product::type + + The file tags matching the product's target artifacts. + + \defaultvalue An empty list +*/ + +/*! + \qmlproperty string Product::targetName + + The base file name of the product's target artifacts. + + \defaultvalue The value of \l{name} with illegal file name characters + replaced by underscores. +*/ + +/*! + \qmlproperty string Product::destinationDirectory + + The directory where the target artifacts will be located. If a relative path + is given, the base directory will be \l{Project::buildDirectory} + {project.buildDirectory}. + + \defaultvalue \c{product.buildDirectory} +*/ + +/*! + \qmlproperty stringList Product::files + + A list of source files. Syntactic sugar to save a \l{Group} item for simple + products. + + Relative paths are resolved using the parent directory of the project file + that sets the property. + + \defaultvalue An empty list +*/ + +/*! + \qmlproperty stringList Product::excludeFiles + + A list of source files not to include. Useful with wildcards. + For more information, see \l{Group}. + + \defaultvalue An empty list +*/ + +/*! + \qmlproperty bool Product::consoleApplication + + On Windows, determines whether a console or GUI application is generated. + + If \c true, a console application is generated. If \c false, a GUI + application is generated. + + On Apple platforms, influences the default application type. + + If \c true, an application bundle is generated. If \c false, a normal + executable is generated. + + \defaultvalue Linker-dependent +*/ + +/*! + \qmlproperty stringList Product::qbsSearchPaths + + project.qbsSearchPaths + + The value set here will be merged with the value of + \l{Project::qbsSearchPaths}{project.qbsSearchPaths}. + + \defaultvalue \l{Project::qbsSearchPaths}{project.qbsSearchPaths} +*/ + +/*! + \qmlproperty string Product::version + + The version number of the product. Used in shared library filenames and generated + Info.plist files in Apple application and framework bundles, for example. + + \nodefaultvalue +*/ + +/*! + \qmlproperty bool Product::aggregate + + If \c{true}, an aggregate product will be created that has dependencies on all + multiplex instances of this product. + + \note If you do not want to do multiplexing, you can use the default value + \c{undefined}. +*/ + +/*! + \qmlproperty stringList Product::multiplexedType + + Specifies the product type for the multiplexed product instances. + + \note If you do not want to do multiplexing, you can use the default value + \c{undefined}. +*/ + +/*! + \qmlproperty stringList Product::multiplexByQbsProperties + + Specifies which properties of the qbs module will be used for product multiplexing. + Its value must be a subset of \c{["architectures", "buildVariants", "profiles"]}. + + \note If you do not want to do multiplexing, you can use the default value + \c{["profiles"]}. +*/ + +/*! + \qmlproperty path Product::buildDirectory + \readonly + + The build directory for this product. This is the directory where generated + files are placed. + + The value of this property is automatically set by \QBS and cannot be + changed by the user. +*/ + +/*! + \qmlproperty path Product::sourceDirectory + \readonly + + The source directory for this product. This is the directory of the file + where this product is defined. + + The value of this property is automatically set by \QBS and cannot be + changed by the user. */ diff --git a/doc/reference/items/language/profile.qdoc b/doc/reference/items/language/profile.qdoc index 072feb6b2..b114eefab 100644 --- a/doc/reference/items/language/profile.qdoc +++ b/doc/reference/items/language/profile.qdoc @@ -26,14 +26,13 @@ ****************************************************************************/ /*! \contentspage list-of-language-items.html - \previouspage product-item.html - \page profile-item.html - \nextpage project-item.html - \ingroup list-of-language-items + \previouspage Product + \nextpage Project + \qmltype Profile + \inqmlmodule QbsLanguageItems \ingroup list-of-items \keyword QML.Properties - \title Profile Item \brief Creates a profile within the project The profiles used by \QBS are normally set up on a user's machine and are then available @@ -62,34 +61,34 @@ The project in the above example can be built in a particular well-known environment without any additional setup. - \c Profile items can appear inside \l{Product Item}{Product} and \l{Project Item}{Project} - items. + \c Profile items can appear inside \l{Product} and \l{Project} items. +*/ + +/*! + \qmlproperty string Profile::baseProfile + + The name of a profile from which this profile inherits. If the same property is + set in both this profile and the base profile, the value from this profile + takes precedence. + + \nodefaultvalue +*/ + +/*! + \qmlproperty bool Profile::condition + + Determines whether this profile can be used. + + If this property is set to \c false, the profile cannot be used. + + \defaultvalue \c true +*/ + +/*! + \qmlproperty string Profile::name - \section1 Profile Properties + The name under which the profile can be referenced later. Setting this property + is required. The value must be unique among all profiles in an entire project. - \table - \header - \li Property - \li Type - \li Default - \li Description - \row - \li baseProfile - \li \c string - \li \c undefined - \li The name of a profile from which this profile inherits. If the same property is - set in both this profile and the base profile, the value from this profile - takes precedence. - \row - \li condition - \li \c bool - \li \c true - \li If this property is set to \c false, the profile cannot be used. - \row - \li name - \li \c string - \li \c undefined - \li The name under which the profile can be referenced later. Setting this property - is required. The value must be unique among all profiles in an entire project. - \endtable + \nodefaultvalue */ diff --git a/doc/reference/items/language/project.qdoc b/doc/reference/items/language/project.qdoc index 18330f574..d2db644f6 100644 --- a/doc/reference/items/language/project.qdoc +++ b/doc/reference/items/language/project.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2017 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of Qbs. @@ -26,17 +26,16 @@ ****************************************************************************/ /*! \contentspage list-of-language-items.html - \previouspage profile-item.html - \page project-item.html - \nextpage properties-item.html - \ingroup list-of-language-items + \previouspage Profile + \nextpage Properties + \qmltype Project + \inqmlmodule QbsLanguageItems \ingroup list-of-items \keyword QML.Project - \title Project Item \brief Represents a collection of products and properties. - A \c Project item represents a collection of of products. In a + A Project item represents a collection of of products. In a non-trivial project, these products are typically defined in their own files and referenced in the main project file: \code @@ -49,66 +48,79 @@ \endcode Any property \c prop attached to this item is available in sub-items as \c project.prop. - While the root of the item hierarchy is always a \c Project, this kind of item can also - appear further down the hierarchy. Such sub-projects are ususally introduced to group products. - See the \l{SubProject Item} for details. - - \note If your project consists of only one product, the \c Project item can be omitted. - - \section1 Project Properties - - \table - \header - \li Property - \li Type - \li Default - \li Description - \row - \li buildDirectory - \li path - \li n/a - \li The build directory of the top-level project. This property is read-only. - \row - \li name - \li string - \li basename of the file the project is defined in - \li The project name. Only relevant for e.g. displaying a project tree in an IDE. - \row - \li profile - \li string - \li n/a - \li The top-level profile for building the project. This property is read-only and - is set by \QBS when the project is being set up. - \row - \li condition - \li bool - \li true - \li Whether the project is enabled. If false, no products or sub-projects will be - collected. - \row - \li qbsSearchPaths - \li stringList - \li empty - \li These paths are searched for imports and modules in addition to the ones listed - in \c{preferences.qbsSearchPaths}. The value set here is merged with the value - inherited from the parent project, if there is one. The result is inherited by - all products in the project. - \row - \li references - \li path list - \li empty - \li A list of files from which to import products. This is equivalent to defining - the respective \c Product items directly under this \c Project item. - \row - \li sourceDirectory - \li path - \li n/a - \li The directory where the file containing the top-level \c Project item is located. - This property is read-only. - \row - \li minimumQbsVersion - \li string - \li "1.3.0" - \li The minimum version of qbs that is needed to build this project. - \endtable + While the root of the item hierarchy is always a Project, this kind of item + can also appear further down the hierarchy. Such sub-projects are usually + introduced to group products. See \l{SubProject} for details. + + \note If your project consists of only one product, the Project item can be + omitted. +*/ + +/*! + \qmlproperty path Project::buildDirectory + \readonly + + The build directory of the top-level project. +*/ + +/*! + \qmlproperty string Project::name + + The project name. Only relevant when displaying a project tree in an IDE, + for example. + + \defaultvalue The basename of the file that defines the project. +*/ + +/*! + \qmlproperty string Project::profile + \readonly + + The top-level \l{Profile}{profile} for building the project. This property + is set by \QBS when the project is being set up. +*/ + +/*! + \qmlproperty bool Project::condition + + Whether the project is enabled. If \c false, no \l{Product}{products} or + sub-projects will be collected. + + \defaultvalue \c true +*/ + +/*! + \qmlproperty stringList Project::qbsSearchPaths + + A list of paths that are searched for imports and modules in addition to the ones listed + in \c{preferences.qbsSearchPaths}. The value set here is merged with the value + inherited from the parent project, if there is one. The result is inherited by + all products in the project. + + \defaultvalue An empty list +*/ + +/*! + \qmlproperty pathList Project::references + + A list of files from which to import products. This is equivalent to defining + the respective \l{Product} items directly under this Project item. + + \defaultvalue An empty list +*/ + +/*! + \qmlproperty path Project::sourceDirectory + \readonly + + The directory where the file containing the top-level Project item is + located. +*/ + +/*! + \qmlproperty string Project::minimumQbsVersion + + The minimum version of \QBS that is needed to build this project. + + \defaultvalue \c "1.3.0" */ diff --git a/doc/reference/items/language/properties.qdoc b/doc/reference/items/language/properties.qdoc index 8ea2496b9..a4d0d46a3 100644 --- a/doc/reference/items/language/properties.qdoc +++ b/doc/reference/items/language/properties.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2017 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of Qbs. @@ -26,20 +26,20 @@ ****************************************************************************/ /*! \contentspage list-of-language-items.html - \previouspage project-item.html - \page properties-item.html - \nextpage propertyoptions-item.html - \ingroup list-of-language-items + \previouspage Project + \nextpage PropertyOptions + \qmltype Properties + \inqmlmodule QbsLanguageItems \ingroup list-of-items \keyword QML.Properties - \title Properties Item \brief Provides conditional setting of properties. - \note This documents the \c Properties item in the context of products. Usage within - a \c SubProject item is described \l{SubProject Item}{here}. + \note This topic documents the Properties item in the context of \l{Product} + {products}. For more information about using it in sub-projects, see + \l{SubProject}. - The \c Properties item is an auxiliary item for setting multiple property values conditionally. + The Properties item is an auxiliary item for setting multiple property values conditionally. In the following example, two properties are set if the project is built for Windows: \code @@ -52,7 +52,7 @@ } \endcode - Multiple \c Properties items can be specified to set properties dependent on different + Multiple Properties items can be specified to set properties dependent on different conditions. The order of appearance is important. Semantics are similar to if-else-chains. The following example \code @@ -90,7 +90,8 @@ } \endcode - In \c Properties items one can access the \l{Module Item#outer}{outer value} of a property. + In Properties items, one can access the \l{Module#outer}{outer value} of a + property. \code Product { Properties { @@ -105,29 +106,25 @@ } \endcode - We suggest to use the \c Properties item for mutually exclusive conditions only. It is + We suggest to use the Properties item for mutually exclusive conditions only. It is especially useful if there are several properties to set, based on the same condition. +*/ + +/*! + \qmlproperty bool Properties::condition + + The condition to be used for the other bindings in this item. + + This is a mandatory property that has no default value. +*/ + +/*! + \qmlproperty bool Properties::overrideListProperties - \section1 List of Properties + List properties set within this item will override the values coming from + modules, rather than getting merged with them, which is the default behavior. + Use this in the rare case that a module you depend on inserts a value into + a list property that is problematic for some product. - \table - \header - \li Property - \li Type - \li Default - \li Description - \row - \li condition - \li bool - \li none - must be specified - \li The condition to be used for the other bindings in this item. - \row - \li overrideListProperties - \li bool - \li \c false - \li List properties set within this item will override the values coming from - modules, rather than getting merged with them, which is the default behavior. - Use this in the rare case that a module you depend on inserts a value into - a list property that is problematic for some product. - \endtable + \defaultvalue \c false */ diff --git a/doc/reference/items/language/propertyoptions.qdoc b/doc/reference/items/language/propertyoptions.qdoc index 37399c9f3..a953489a0 100644 --- a/doc/reference/items/language/propertyoptions.qdoc +++ b/doc/reference/items/language/propertyoptions.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2017 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of Qbs. @@ -26,43 +26,39 @@ ****************************************************************************/ /*! \contentspage list-of-language-items.html - \previouspage properties-item.html - \page propertyoptions-item.html - \nextpage rule-item.html - \ingroup list-of-language-items + \previouspage Properties + \nextpage Rule + \inqmlmodule QbsLanguageItems + \qmltype PropertyOptions \ingroup list-of-items \keyword QML.PropertyOptions - \title PropertyOptions Item \brief Provides inline documentation for properties within product and module items. - A \c PropertyOptions item can appear inside a \l{Product Item} or \l{Module Item} to provide - inline documentation for properties. + A PropertyOptions item can appear inside a \l{Product} or \l{Module} item to + provide inline documentation for properties. +*/ + +/*! + \qmlproperty stringList PropertyOptions::allowedValues + + A list of the values permitted by the property. + + The default value, \c{undefined}, indicates that any value is permitted. +*/ - \section1 PropertyOptions Properties +/*! + \qmlproperty string PropertyOptions::description + + A brief description of the property. + + \nodefaultvalue +*/ + +/*! + \qmlproperty string PropertyOptions::name - \table - \header - \li Property - \li Type - \li Default - \li Description - \row - \li allowedValues - \li stringList - \li undefined - \li A list of the values permitted by the property. \c{undefined} indicates that any value - is permitted. - \row - \li description - \li string - \li undefined - \li A brief description of the property. - \row - \li name - \li string - \li undefined - \li The name of the property to document. - \endtable + The name of the property to document. + \nodefaultvalue */ diff --git a/doc/reference/items/language/rule.qdoc b/doc/reference/items/language/rule.qdoc index b4066a43b..215cded95 100644 --- a/doc/reference/items/language/rule.qdoc +++ b/doc/reference/items/language/rule.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2017 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of Qbs. @@ -26,19 +26,18 @@ ****************************************************************************/ /*! \contentspage list-of-language-items.html - \previouspage propertyoptions-item.html - \page rule-item.html - \nextpage scanner-item.html - \ingroup list-of-language-items + \previouspage PropertyOptions + \nextpage Scanner + \qmltype Rule + \inqmlmodule QbsLanguageItems \ingroup list-of-items \keyword QML.Rule - \title Rule Item \brief Creates transformers for input tags. In \QBS, rules create \e transformers that produce output files from input files. The term \e transformer refers to a list of \l{Command and JavaScriptCommand}{commands}. - These commands are created in a rule's \e {prepare script}. They do the actual work, either + These commands are created in a rule's \l{prepare} script. They do the actual work, either directly or by executing external commands. \section1 A Simple Example @@ -59,10 +58,10 @@ inputs: ["txt_input"] \endcode Here we are specifying that our rule is interested in input files that have the tag - "txt_input". Such files could be source files, in which case you would tag them - using a \l{Group Item}{Group}. Or they could in turn get generated by a different rule, + \c "txt_input". Such files could be source files, in which case you would tag them + using a \l{Group}. Or they could in turn get generated by a different rule, in which case that rule would assign the file tag. - The files matching the tag will be available in the prepare script under the name + The files matching the tag will be available in the \l{prepare} script under the name \c inputs (see \l{inputs and outputs}{The inputs and outputs Variables}). \code Artifact { @@ -74,13 +73,13 @@ whose name is the same as the input file, but with an additional extension. Because we are giving a relative path, \QBS will prepend that path by the product's build directory. - In addition, we tell \QBS that the output files should get the file tag "txt_output". This + In addition, we tell \QBS that the output files should get the file tag \c "txt_output". This enables other rules to use these files as inputs. You must always assign suitable file tags to your output artifacts, or the rule will not be run. See \l{Rules and Product Types} for details. If you want to create more than one output file per input file, you simply provide multiple - \c Artifact items. The set of output artifacts will be available in the prepare script + \l Artifact items. The set of output artifacts will be available in the prepare script under the name \c outputs (see \l{inputs and outputs}{The inputs and outputs Variables}). \code @@ -178,127 +177,171 @@ the \c cpp module (the rule that runs the compiler). \li The rule found in the previous step takes inputs of type \c{"cpp"}. No rule is found that creates such artifacts, but we do have a source file with a matching type (because - the \c cpp module contains a \l{FileTagger item}{FileTagger} which attached that type + the \c cpp module contains a \l{FileTagger} which attached that type to \c{"main.cpp"} due to its file extension). \li Now that there is a chain of rules leading from a source file tag to the product type, the commands of these rules are executed one after the other until we end up with our executable. \endlist - \section1 Rule Properties +*/ - \table - \header - \li Property - \li Type - \li Default - \li Description - \row - \li multiplex - \li bool - \li false - \li Determines whether this is a multiplex rule. - \row - \li inputs - \li string list - \li undefined - \li File tags the input artifacts must match. - All output artifacts will depend on all artifacts in the product with - the given input file tags. Also these artifacts are available in the - inputs variable of the prepare script. - \row - \li auxiliaryInputs - \li string list - \li undefined - \li A list of file tags. This rule will be dependent on every other rule - that produces artifacts that are compatible with \a{auxiliaryInputs}. - Unlike \a{inputs}, the property \a{auxiliaryInputs} has no effect on the content of the - \a{inputs} variable in the \a{prepare} script. - All rules in this product and rules of product dependencies that produce target - artifacts are considered. - \row - \li excludedAuxiliaryInputs - \li string list - \li undefined - \li A list of file tags. Connections to rules that produce these file tags are prevented. - This property has no effect on the content of the \a{inputs} variable in the \a{prepare} - script. - \row - \li inputsFromDependencies - \li string list - \li undefined - \li File tags the artifacts of product dependencies must match. - For example, the product \a foo might appear as follows in the current product: - \code - Depends { - name: "foo" - } - \endcode - All artifacts of \a foo that match the given - file tags will appear in the \a inputs variable of the prepare - script. - \row - \li outputArtifacts - \li array of objects - \li undefined - \li An array of output artifacts, specified as JavaScript objects. - Example: - \code - outputArtifacts: [{ - filePath: "myfile.cpp", - fileTags: ["cpp"], - cpp: { cxxLanguageVersion: "c++11" } - }] - \endcode - For a description of the possible properties, see the documentation of the - \l{Artifact item}. - Output artifacts can be specified either by \c{Rule.outputArtifacts} or by \c{Artifact} - items. Use \c{Rule.outputArtifacts} if the set of outputs is not fixed but dependent on - the input's content. If no file tags are provided, \QBS will apply all - \l{FileTagger Item}{file taggers} known in the current context to the output file name. - The user may set the property \c{explicitlyDependsOn} on artifact objects, which is - similar to \c{Rule.explicitlyDependsOn}. - \row - \li outputFileTags - \li string list - \li undefined - \li If output artifacts are specified by \c{Rule.outputArtifacts}, then - \c{Rule.outputFileTags} must be a list of file tags the rule potentially produces. - \row - \li condition - \li bool - \li true - \li If true, the rule is enabled, otherwise it does nothing. - \row - \li explicitlyDependsOn - \li string list - \li undefined - \li Each artifact that matches the file tags in \a explicitlyDependsOn - is added to the dependencies of each output node. All artifacts in the current product - and target artifact of products that this product depends on are considered. - \row - \li prepare - \li script - \li undefined - \li Script that prepares the commands to transform the inputs to outputs. - The code in this script is treated as a function with the signature - \c{function(project, product, inputs, outputs, input, output, explicitlyDependsOn)}. - The argument \c{input} is \c{undefined} if there's more than one input artifact for this - rule. Similarly, \c{output} is only defined if there's exactly one output artifact. - \row - \li requiresInputs - \li bool - \li \c true if the rule declares any inputs, \c false otherwise - \li Specifies whether a rule's commands should be created even if no inputs are available. - Enabling this property can be useful in cases where you potentially have input files, - but it is possible that there are none and you want to create the output file in - any case. - \row - \li alwaysRun - \li bool - \li false - \li If true, the rule's commands are always executed, even if all output artifacts - are up to date. - \endtable +/*! + \qmlproperty bool Rule::multiplex + + Determines whether this is a multiplex rule. + + \defaultvalue \c false +*/ + +/*! + \qmlproperty stringList Rule::inputs + + A list of file tags the input artifacts must match. + + All output artifacts will depend on all artifacts in the product with + the given input file tags. Also, these artifacts are available in the + \c inputs variable of the \l{prepare} script. + + \nodefaultvalue +*/ + +/*! + \qmlproperty stringList Rule::auxiliaryInputs + + A list of file tags. This rule will be dependent on every other rule that + produces artifacts that are compatible with the value of this property. + + Unlike \l{inputs}, this property has no effect on the content of the + \c inputs variable of the \l{prepare} script. + + All rules in this product and rules of product dependencies that produce + target artifacts are considered. + + \nodefaultvalue +*/ + +/*! + \qmlproperty stringList Rule::excludedAuxiliaryInputs + + A list of file tags. Connections to rules that produce these file tags are + prevented. This property has no effect on the content of the \c inputs + variable in the \l{prepare} script. + + \nodefaultvalue +*/ + +/*! + \qmlproperty stringList Rule::inputsFromDependencies + + A list of file tags that the artifacts of product dependencies must match. + + For example, the product \a foo might appear as follows in the current + product: + + \code + Depends { + name: "foo" + } + \endcode + + All artifacts of \a foo that match the given file tags will appear in the + \c inputs variable of the \l{prepare} script. + + \nodefaultvalue +*/ + +/*! + \qmlproperty array Rule::outputArtifacts + + An array of output artifacts, specified as JavaScript objects. + + For example: + + \code + outputArtifacts: [{ + filePath: "myfile.cpp", + fileTags: ["cpp"], + cpp: { cxxLanguageVersion: "c++11" } + }] + \endcode + + For a description of the possible properties, see the documentation of the + \l{Artifact} item. + + Output artifacts can be specified either by this property or by \l{Artifact} + items. Use this property if the set of outputs is not fixed but depends the + input's content. If no file tags are provided, \QBS will apply all + \l{FileTagger}{file taggers} known in the current context to the output file + name. + + The user may set the property \c{explicitlyDependsOn} on artifact objects, which is + similar to \c{Rule.explicitlyDependsOn}. + + \nodefaultvalue +*/ + +/*! + \qmlproperty stringList Rule::outputFileTags + + If output artifacts are specified by \l{outputArtifacts}, this property must + specify a list of file tags that the rule potentially produces. + + \nodefaultvalue +*/ + +/*! + \qmlproperty bool Rule::condition + + If \c true, the rule is enabled, otherwise it does nothing. + + \defaultvalue \c true +*/ + +/*! + \qmlproperty stringList Rule::explicitlyDependsOn + + A list of file tags. Each artifact that matches the file tags is added to + the dependencies of each output node. All artifacts in the current product + and target artifacts of products that this product depends on are + considered. + + \nodefaultvalue +*/ + +/*! + \qmlproperty script Rule::prepare + + A script that prepares the commands to transform the inputs to outputs. + + The code in this script is treated as a function with the signature + \c{function(project, product, inputs, outputs, input, output, explicitlyDependsOn)}. + + The argument \c{input} is \c{undefined} if there's more than one input + artifact for this rule. Similarly, \c{output} is only defined if there is + exactly one output artifact. + + \nodefaultvalue + +*/ + +/*! + \qmlproperty bool Rule::requiresInputs + + Specifies whether a rule's commands should be created even if no inputs are + available. + + Enabling this property can be useful if you are not sure whether input + files exist, and you want \QBS to create an output file even if they do not. + + Set to \c true if the rule declares any inputs, \c false otherwise. +*/ + +/*! + \qmlproperty bool Rule::alwaysRun + + If \c true, the rule's commands are always executed, even if all output + artifacts are up to date. + \defaultvalue \c false */ diff --git a/doc/reference/items/language/scanner.qdoc b/doc/reference/items/language/scanner.qdoc index 607af3965..9c5b28f75 100644 --- a/doc/reference/items/language/scanner.qdoc +++ b/doc/reference/items/language/scanner.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2017 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of Qbs. @@ -26,17 +26,16 @@ ****************************************************************************/ /*! \contentspage list-of-language-items.html - \previouspage rule-item.html - \page scanner-item.html - \nextpage subproject-item.html - \ingroup list-of-language-items + \previouspage Rule + \nextpage SubProject + \qmltype Scanner + \inqmlmodule QbsLanguageItems \ingroup list-of-items \keyword QML.Scanner - \title Scanner Item \brief Creates custom dependency scanners in modules. - A \c Scanner item can appear inside a \l{Module Item}, and allows to extract + A Scanner item can appear inside a \l{Module} item, and allows to extract dependencies for artifacts from the artifacts' file contents. For example, this is what a scanner for "qrc" files might look like: \code @@ -54,42 +53,53 @@ } } \endcode +*/ + +/*! + \qmlproperty bool Scanner::condition + + If \c true, the scanner is enabled, otherwise it does nothing. + + \defaultvalue \c true +*/ + +/*! + \qmlproperty stringList Scanner::inputs + + A list of \l{FileTagger}{file tags} the input artifacts must match. + + \nodefaultvalue +*/ + +/*! + \qmlproperty bool Scanner::recursive + + Determines whether to scan the returned \l{Depends}{dependencies} using + the same scanner. + + \defaultvalue \c false +*/ + +/*! + \qmlproperty script Scanner::searchPaths + + A script that returns the paths where to look for \l{Depends} + {dependencies}. + + The code in this script is treated as a function with the signature + \c{function(project, product, input)}. + + \nodefaultvalue +*/ + +/*! + \qmlproperty script Scanner::scan + + A script that reads the input artifact and returns a string list with + \l{Depends}{dependencies}. + + The code in this script is treated as a function with the signature + \c{function(project, product, input)}. - \section1 Scanner Properties - \table - \header - \li Property - \li Type - \li Default - \li Description - \row - \li condition - \li bool - \li true - \li If true, the scanner is enabled, otherwise it does nothing. - \row - \li inputs - \li string list - \li undefined - \li File tags the input artifacts must match. - \row - \li recursive - \li bool - \li false - \li Determines whether to scan the returned dependencies using the same scanner. - \row - \li searchPaths - \li script - \li undefined - \li Script that returns paths to look for dependencies. - The code in this script is treated as a function with the signature - \c{function(project, product, input)}. - \row - \li scan - \li script - \li undefined - \li Script that reads the input artifact and returns string list with dependencies. - The code in this script is treated as a function with the signature - \c{function(project, product, input)}. - \endtable + \nodefaultvalue */ diff --git a/doc/reference/items/language/subproject.qdoc b/doc/reference/items/language/subproject.qdoc index e125bcc8c..955b092f1 100644 --- a/doc/reference/items/language/subproject.qdoc +++ b/doc/reference/items/language/subproject.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2017 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of Qbs. @@ -26,16 +26,15 @@ ****************************************************************************/ /*! \contentspage list-of-language-items.html - \previouspage scanner-item.html - \page subproject-item.html - \ingroup list-of-language-items + \previouspage Scanner + \qmltype SubProject + \inqmlmodule QbsLanguageItems \ingroup list-of-items \keyword QML.SubProject - \title SubProject Item \brief Adds a project from a different file. - A \c SubProject item is used to add a project defined in another file as a sub-project to + A SubProject item is used to add a project defined in another file as a sub-project to the surrounding project: \code SubProject { @@ -52,27 +51,24 @@ references: "subdir/project.qbs" \endcode - It is also possible to nest \c Project items directly in the same file. + It is also possible to nest \l{Project} items directly in the same file. +*/ + +/*! + \qmlproperty path SubProject::filePath + + The file path of the project to add as a sub-project. If the top-level item + in this file is a \l{Product}, it gets wrapped automatically in a new project. + + \defaultvalue empty +*/ + +/*! + \qmlproperty bool SubProject::inheritProperties - \section1 SubProject Properties + Determines whether the sub-project should inherit the properties of the + surrounding \l{Project}. You can use this feature to share global + settings between projects and sub-projects. - \table - \header - \li Property - \li Type - \li Default - \li Description - \row - \li filePath - \li path - \li empty - \li The file path of the project to add as a sub-project. If the top-level item in this - file is a \c Product, it gets wrapped automatically in a new project. - \row - \li inheritProperties - \li bool - \li true - \li Whether the sub-project should inherit the properties of the surrounding project. - You can use this feature to share "global" settings between (sub-)projects. - \endtable + \defaultvalue \c true */ diff --git a/doc/reference/modules/cpp-module.qdoc b/doc/reference/modules/cpp-module.qdoc index 4b5ddcd60..ab7299062 100644 --- a/doc/reference/modules/cpp-module.qdoc +++ b/doc/reference/modules/cpp-module.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2017 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of Qbs. @@ -80,14 +80,14 @@ \li \c{bool} \li 1.8 \li \c{false} - \li Enabling this property on a product instructs the \l{FileTagger Item}{file tagger} + \li Enabling this property on a product instructs the \l{FileTagger}{file tagger} to attach the tag \c{"c.combine"} to C sources, rather than \c{"c"}. As a result, all C sources of the product will be combined into a single file which is then compiled. This can speed up initial compilation significantly, but is of course detrimental in the context of incremental builds. Also, perfectly legal code may fail to compile with this option due to the merging of translation units. If you want to enable this property in a product that has some sources which - cannot be merged, you need to put these into a dedicated \l{Group Item}{group} and + cannot be merged, you need to put these into a dedicated \l{Group}{group} and set their file tag to \c{"c"}, overriding the file tagger. \note Module properties set on specific source files (that is, at the Group level) will not be taken into account when building the combined file. You either need diff --git a/doc/reference/modules/qt-modules.qdoc b/doc/reference/modules/qt-modules.qdoc index 9f6116683..408a802f8 100644 --- a/doc/reference/modules/qt-modules.qdoc +++ b/doc/reference/modules/qt-modules.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2017 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of Qbs. @@ -372,7 +372,7 @@ \li \c{product.targetName} \li For files tagged as \c{qt.core.resource_data}, this property determines the base name of the generated \c qrc file. If this property needs to be changed, it must be set - in the corresponding product rather than in a Group. + in the corresponding product rather than in a \l{Group}. \row \li staticBuild \li \c{bool} @@ -627,8 +627,8 @@ \li \c{"qdoc-output"} \li n/a \li 1.5 - \li Use this tag to match all \c qdoc outputs, for instance in a \l{Group Item}{Group} - using the \c fileTagsFilter property. + \li Use this tag to match all \c qdoc outputs, for instance in a \l{Group} + using the \l{Group::fileTagsFilter}{group.fileTagsFilter} property. \row \li \c{"qhp"} \li \c{*.qhp} diff --git a/doc/reference/reference.qdoc b/doc/reference/reference.qdoc index d87efe32e..c94ba1a93 100644 --- a/doc/reference/reference.qdoc +++ b/doc/reference/reference.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2017 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of Qbs. @@ -83,7 +83,7 @@ /*! \contentspage reference.html - \group list-of-language-items + \qmlmodule QbsLanguageItems \title List of Language Items \QBS provides the following built-in QML items to define projects. |