diff options
Diffstat (limited to 'doc/reference')
25 files changed, 914 insertions, 182 deletions
diff --git a/doc/reference/cli/builtin/cli-build.qdoc b/doc/reference/cli/builtin/cli-build.qdoc index 8e4b8ed44..cffb19d49 100644 --- a/doc/reference/cli/builtin/cli-build.qdoc +++ b/doc/reference/cli/builtin/cli-build.qdoc @@ -68,6 +68,7 @@ \target build-force-probe-execution \include cli-options.qdocinc force-probe-execution \include cli-options.qdocinc jobs + \include cli-options.qdocinc job-limits \include cli-options.qdocinc keep-going \include cli-options.qdocinc less-verbose \include cli-options.qdocinc log-level diff --git a/doc/reference/cli/cli-options.qdocinc b/doc/reference/cli/cli-options.qdocinc index 189a3526a..254444dcb 100644 --- a/doc/reference/cli/cli-options.qdocinc +++ b/doc/reference/cli/cli-options.qdocinc @@ -249,6 +249,22 @@ //! [jobs] +//! [job-limits] + + \section2 \c {--job-limits <pool1>:<limit1>[,<pool2>:<limit2>...]} + + Sets pool-specific job limits. See \l{job-pool-howto}{here} for more information on + job pools. + + \section2 \c {--enforce-project-job-limits} + + Normally, job limits defined in project files via the \l JobLimit item get overridden + by those set on the command line. If this option is passed, they get maximum priority + instead. Use it if there are product-specific limits that make more sense for + that part of the code base than the generic ones you'd like to apply globally. + +//! [job-limits] + //! [keep-going] \section2 \c --keep-going|-k @@ -441,8 +457,6 @@ This option is mutually exclusive with \c --log-time. - \note This option is not available on a Windows host. - //! [show-progress] //! [setup-tools-system] diff --git a/doc/reference/commands.qdoc b/doc/reference/commands.qdoc index 8f0392c32..eb93e8f7a 100644 --- a/doc/reference/commands.qdoc +++ b/doc/reference/commands.qdoc @@ -103,6 +103,13 @@ \endlist All other values are mapped to the default color. \row + \li \c jobPool + \li string + \li empty + \li Determines which job pool the command will use. An empty + string, which is the default, stands for the global job pool. + See \l{JobLimit}{here} and \l{job-pool-howto}{here} for more information on job pools. + \row \li \c silent \li bool \li false diff --git a/doc/reference/items/convenience/androidapk.qdoc b/doc/reference/items/convenience/androidapk.qdoc deleted file mode 100644 index 89a4112b6..000000000 --- a/doc/reference/items/convenience/androidapk.qdoc +++ /dev/null @@ -1,118 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qbs. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ -/*! - \contentspage list-of-convenience-items.html - \nextpage AppleApplicationDiskImage - \qmltype AndroidApk - \inherits Product - \inqmlmodule QbsConvenienceItems - \ingroup list-of-items - \keyword QML.AndroidApk - - \brief Android application package. - - An AndroidApk item is a \l{Product}{product} of the \l{Product::}{type} - \c android.apk that has a \l{Depends}{dependency} on the \l{Android.sdk} - module. The final build result is an Android application package (APK) file. - - Here is what the project file could look like for the BasicMediaDecoder - example that comes with the Android SDK: - - \code - import qbs - - AndroidApk { - name: "Basic Media Decoder" - packageName: "com.example.android.basicmediadecoder" - - property string sourcesPrefix: "Application/src/main/" - - resourcesDir: sourcesPrefix + "/res" - sourcesDir: sourcesPrefix + "/java" - manifestFile: sourcesPrefix + "/AndroidManifest.xml" - } - \endcode -*/ - -/*! - \qmlproperty path AndroidApk::assetsDir - - The base directory for Android assets. - - \note Android requires that the file name of this directory is always - \c "assets". - - \defaultvalue \c "assets" -*/ - -/*! - \qmlproperty bool AndroidApk::automaticSources - - If \c true, Java sources as well as Android resources, assets, and the - manifest file will be automatically included in the product via wildcards. - Set this property to \c false if you want to specify these files manually. - - \defaultvalue \c true -*/ - -/*! - \qmlproperty path AndroidApk::manifestFile - - The file path to the Android manifest file. - - \note Android requires that the file name is always "AndroidManifest.xml". - - \defaultvalue \c "AndroidManifest.xml" -*/ - -/*! - \qmlproperty string AndroidApk::packageName - - The package name as given in the manifest file. - - \defaultvalue \c name -*/ - -/*! - \qmlproperty path AndroidApk::resourcesDir - - The base directory for Android resources. - - \note Android requires that the file name of this directory is always - \c "res". - - \defaultvalue \c "res" -*/ - -/*! - \qmlproperty path AndroidApk::sourcesDir - - The base directory for Java sources. This property is only relevant if - \l automaticSources is enabled. - - \defaultvalue \c "src" -*/ diff --git a/doc/reference/items/convenience/appleapplicationdiskimage.qdoc b/doc/reference/items/convenience/appleapplicationdiskimage.qdoc index d8011d66a..69a10c797 100644 --- a/doc/reference/items/convenience/appleapplicationdiskimage.qdoc +++ b/doc/reference/items/convenience/appleapplicationdiskimage.qdoc @@ -26,7 +26,6 @@ ****************************************************************************/ /*! \contentspage list-of-convenience-items.html - \previouspage AndroidApk \nextpage AppleDiskImage \qmltype AppleApplicationDiskImage \since Qbs 1.9 @@ -51,8 +50,6 @@ Here is what the project file could look like for a simple DMG installer: \code - import qbs - AppleApplicationDiskImage { Depends { name: "myapp" } name: "My App" diff --git a/doc/reference/items/convenience/application.qdoc b/doc/reference/items/convenience/application.qdoc index de2bbae48..c09d15918 100644 --- a/doc/reference/items/convenience/application.qdoc +++ b/doc/reference/items/convenience/application.qdoc @@ -36,12 +36,34 @@ \brief Product of the type application. - An Application item is a \l{Product} of the \l{Product::}{type} - \c "application". + An Application item is a \l{Product} representing an application. - It exists for the convenience of project file authors. + The target artifact of this type of product is usually an executable binary + tagged \c "application". + However, on Android, unless you set \l{Product::}{consoleApplication} to \c true, + the application target will be an APK package tagged \c "android.apk", and a + dependency to the \l{Android.sdk} module is automatically added to the product. +*/ + +/*! + \qmlproperty bool Application::install + + If \c{true}, the executable that is produced when building the application will be installed + to \l installDir. + + \defaultvalue \c false + \since Qbs 1.13 +*/ + +/*! + \qmlproperty string Application::installDir + + Where to install the executable that is produced when building the application, if \l install + is enabled. + + The value is appended to \l{qbs::installPrefix}{qbs.installPrefix} + when constructing the actual installation directory. - \note On Android, an Application item instead builds a shared library for - products whose \l{Product::}{consoleApplication} property is set to - \c false. + \defaultvalue \c Applications if the app is a \l{bundle::isBundle}{bundle}, \c bin otherwise. + \since Qbs 1.13 */ diff --git a/doc/reference/items/convenience/autotestrunner.qdoc b/doc/reference/items/convenience/autotestrunner.qdoc index f4861835b..defb2814e 100644 --- a/doc/reference/items/convenience/autotestrunner.qdoc +++ b/doc/reference/items/convenience/autotestrunner.qdoc @@ -73,6 +73,8 @@ \qmlproperty stringList AutotestRunner::arguments The list of arguments to invoke the autotest with. + A test can override this by setting the \l{autotest::arguments}{arguments} property + of the \l autotest module. \defaultvalue \c [] */ @@ -114,6 +116,8 @@ If this property is set, it will be the working directory for all invoked test executables. Otherwise, the working directory will the the parent directory of the respective executable. + A test can override this by setting the \l{autotest::workingDir}{workingDir} property + of the \l autotest module. \nodefaultvalue \since Qbs 1.12 diff --git a/doc/reference/items/convenience/dynamiclibrary.qdoc b/doc/reference/items/convenience/dynamiclibrary.qdoc index 27aa978d1..488aef3eb 100644 --- a/doc/reference/items/convenience/dynamiclibrary.qdoc +++ b/doc/reference/items/convenience/dynamiclibrary.qdoc @@ -38,7 +38,7 @@ \brief Dynamic library. A DynamicLibrary item is a \l{Product} of the \l{Product::}{type} - \c "dynamiclibrary". It exists for the convenience of project file authors. + \c "dynamiclibrary". For Android targets, the following applies: \list @@ -48,3 +48,50 @@ \endlist */ +/*! + \qmlproperty bool DynamicLibrary::install + + If \c{true}, the library will be installed to \l installDir. + + \defaultvalue \c false + \since Qbs 1.13 +*/ + +/*! + \qmlproperty string DynamicLibrary::installDir + + Where to install the library, if \l install is enabled. On Unix, the symbolic links + are also installed to this location. + + The value is appended to \l{qbs::installPrefix}{qbs.installPrefix} + when constructing the actual installation directory. + + \defaultvalue \c Library/Frameworks if the library is a \l{bundle::isBundle}{bundle}, + otherwise \c bin for Windows and \c lib for Unix-like targets. + \since Qbs 1.13 +*/ + +/*! + \qmlproperty bool DynamicLibrary::installImportLib + + If \c{true}, the import library will be installed to \l importLibInstallDir. + This property is only relevant for Windows targets. + Enable it if you want to create a development package. + + \defaultvalue \c false + \since Qbs 1.13 +*/ + +/*! + \qmlproperty string DynamicLibrary::importLibInstallDir + + Where to install the import library, if \l installImportLib is enabled. + + The value is appended to \l{qbs::installPrefix}{qbs.installPrefix} + when constructing the actual installation directory. + + This property is only relevant for Windows targets. + + \defaultvalue \c lib + \since Qbs 1.13 +*/ diff --git a/doc/reference/items/convenience/qtguiapplication.qdoc b/doc/reference/items/convenience/qtguiapplication.qdoc index 09b8514f5..e69b9214c 100644 --- a/doc/reference/items/convenience/qtguiapplication.qdoc +++ b/doc/reference/items/convenience/qtguiapplication.qdoc @@ -37,15 +37,5 @@ \brief Application with a dependency on the Qt GUI module. A QtGuiApplication is an application that extends the \l{QtApplication} item - by loading the \l{Qt.gui} module and possibly also the default - QPA plugin. -*/ - -/*! - \qmlproperty bool QtGuiApplication::linkDefaultQpaPlugin - - Whether or not to add a depencency to the default QPA plugin. The default is - to do that in the case of a static build, where it is normally required. - - \defaultvalue \l{Qt.core::staticBuild}{Qt.core.staticBuild} + by loading the \l{Qt.gui} module. */ diff --git a/doc/reference/items/convenience/staticlibrary.qdoc b/doc/reference/items/convenience/staticlibrary.qdoc index a7a94cc43..cd459cf6e 100644 --- a/doc/reference/items/convenience/staticlibrary.qdoc +++ b/doc/reference/items/convenience/staticlibrary.qdoc @@ -37,11 +37,27 @@ \brief Static library. A StaticLibrary item is a \l{Product}{product} of the \l{Product::}{type} - \c "staticlibrary" that is normally entirely equivalent to the following: + \c "staticlibrary". +*/ + +/*! + \qmlproperty bool StaticLibrary::install + + If \c{true}, the library will be installed to \l installDir. + + \defaultvalue \c false + \since Qbs 1.13 +*/ + +/*! + \qmlproperty string StaticLibrary::installDir + + Where to install the library, if \l install is enabled. + + The value is appended to \l{qbs::installPrefix}{qbs.installPrefix} + when constructing the actual installation directory. - \code - Product { - type: "staticlibrary" - } - \endcode + \defaultvalue \c Library/Frameworks if the library is a \l{bundle::isBundle}{bundle}, + \c lib otherwise. + \since Qbs 1.13 */ diff --git a/doc/reference/items/language/group.qbs b/doc/reference/items/language/group.qbs index 4b478bfa5..c6bbae875 100644 --- a/doc/reference/items/language/group.qbs +++ b/doc/reference/items/language/group.qbs @@ -28,8 +28,6 @@ ** ****************************************************************************/ -import qbs 1.0 - Project { Product { //! [0] diff --git a/doc/reference/items/language/group.qdoc b/doc/reference/items/language/group.qdoc index dae647060..caeffcfaa 100644 --- a/doc/reference/items/language/group.qdoc +++ b/doc/reference/items/language/group.qdoc @@ -28,7 +28,7 @@ /*! \contentspage list-of-language-items.html \previouspage FileTagger - \nextpage Module + \nextpage JobLimit \qmltype Group \inqmlmodule QbsLanguageItems \ingroup list-of-items diff --git a/doc/reference/items/language/joblimit.qdoc b/doc/reference/items/language/joblimit.qdoc new file mode 100644 index 000000000..66697ba3e --- /dev/null +++ b/doc/reference/items/language/joblimit.qdoc @@ -0,0 +1,107 @@ +/**************************************************************************** +** +** Copyright (C) 2018 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qbs. +** +** $QT_BEGIN_LICENSE:FDL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Free Documentation License Usage +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of +** this file. Please review the following information to ensure +** the GNU Free Documentation License version 1.3 requirements +** will be met: https://www.gnu.org/licenses/fdl-1.3.html. +** $QT_END_LICENSE$ +** +****************************************************************************/ +/*! + \contentspage list-of-language-items.html + \previouspage Group + \nextpage Module + \qmltype JobLimit + \inqmlmodule QbsLanguageItems + \ingroup list-of-items + \keyword QML.JobLimit + + \brief Restricts concurrent execution of jobs in a given pool. + + In addition to the global limit on concurrently running commands, a project might + want to restrict concurrent execution of certain types of commands even further, + for instance because they are not well-suited to share certain types of resources. + + In the following example, we define a rule that runs a tool of which at most one + instance can be running for the same project at any given time: + \code + Rule { + // ... + prepare: { + var cmd = new Command("my-exclusive-tool", [project.buildDirectory]); + cmd.description = "running the exclusive tool"; + cmd.jobPool = "exclusive_tool"; + return cmd; + } + } + JobLimit { + jobPool: "exclusive_tool" + jobCount: 1 + } + \endcode + + \c JobLimit items can appear inside \l Product, \l Project and \l Module items. + In the case of collisions, that is, items matching the same job pool but setting + different values, the ones defined inside products have the highest precedence, + and the ones inside modules have the lowest. Items defined in sub-projects have + higher precedence than those defined in parent projects. For items with the same + precedence level, the most restrictive one is chosen, that is, the one with the + lowest job number greater than zero. + + \see {How do I limit the number of concurrent jobs for the linker only?} +*/ + +/*! + \qmlproperty bool JobLimit::condition + + Determines whether the job limit is active. + + If this property is set to \c false, the job limit is ignored. + + \defaultvalue \c true +*/ + +/*! + \qmlproperty string JobLimit::jobCount + + The maximum number of commands in the given \l{jobPool}{job pool} that can run + concurrently. + + A value of zero means "unlimited", negative values are not allowed. + + \note The global job limit always applies: For instance, if you set this + property to 100 for some job pool, and "-j 8" was given on the + command line, then no more than eight instances of commands from + the respective job pool will run at any time. + + This property must always be set. + + \nodefaultvalue +*/ + +/*! + \qmlproperty string JobLimit::jobPool + + The job pool to which apply the limit. + + This property must always be set to a non-empty value. + + \nodefaultvalue +*/ diff --git a/doc/reference/items/language/module.qdoc b/doc/reference/items/language/module.qdoc index fb2238e0c..e5472983f 100644 --- a/doc/reference/items/language/module.qdoc +++ b/doc/reference/items/language/module.qdoc @@ -26,7 +26,7 @@ ****************************************************************************/ /*! \contentspage list-of-language-items.html - \previouspage Group + \previouspage JobLimit \nextpage Parameter \qmltype Module \inqmlmodule QbsLanguageItems @@ -41,7 +41,6 @@ characters from them. The module's name is \c{txt_processor}. \code - import qbs import qbs.FileInfo import qbs.TextFile diff --git a/doc/reference/modules/android-ndk-module.qdoc b/doc/reference/modules/android-ndk-module.qdoc index 529f2fb4d..8113a7c68 100644 --- a/doc/reference/modules/android-ndk-module.qdoc +++ b/doc/reference/modules/android-ndk-module.qdoc @@ -34,29 +34,21 @@ \brief Provides support for building native Android libraries. The \c Android.ndk module contains the properties and rules to create native libraries - for use in \l{AndroidApk}{Android application packages}. + for use in Android applications. Normally, you will not use this module directly, but instead work - with the \l{DynamicLibrary} and \l{StaticLibrary} items that \QBS provides. + with the \l{DynamicLibrary}, \l{StaticLibrary} and \l Application items + that \QBS provides. Here is what the project file for the \c hello-jni example that comes with the NDK could look like: \code - import qbs - - Project { - DynamicLibrary { - name: "hello-jni" - qbs.architectures: ["mips", "x86"] - files: ["jni/hello-jni.c"] - } - - AndroidApk { - name: "HelloJni" - packageName: "com.example.hellojni" - Depends { productTypes: ["android.nativelibrary"] } - } + CppApplication { + name: "HelloJni" + Android.sdk.packageName: "com.example.hellojni" + qbs.architectures: ["mips", "x86"] + files: "app/src/main/jni/hello-jni.c" } \endcode diff --git a/doc/reference/modules/android-sdk-module.qdoc b/doc/reference/modules/android-sdk-module.qdoc index bad547311..a9e06ae17 100644 --- a/doc/reference/modules/android-sdk-module.qdoc +++ b/doc/reference/modules/android-sdk-module.qdoc @@ -35,9 +35,7 @@ The Android.sdk module contains the properties and rules to create Android application packages from Java sources, resources, and so on. - - Normally, you will not use this module directly, but instead work - with the \l{AndroidApk} item that \QBS provides. + It is usually pulled in indirectly by declaring an \l Application product. \section2 Relevant File Tags \target filetags-android-sdk @@ -59,14 +57,8 @@ \li - \li 1.4.0 \li Attached to Android assets, which are typically located in an - \c{assets/} subdirectory. Using the \l{AndroidApk} item takes care - of tagging these files for you. - \row - \li \c{"android.apk"} - \li n/a - \li 1.4.0 - \li Attached to the output artifact of the rule that creates an APK - package. It is the default type of the \l{AndroidApk} item. + \c{assets/} subdirectory. These files are tagged automatically + if the \l automaticSources property is enabled. \row \li \c{"android.manifest"} \li \c{AndroidManifest.xml} @@ -78,8 +70,8 @@ \li - \li 1.4.0 \li Attached to Android resources, which are typically located in a - \c{res/} subdirectory. Using the \l{AndroidApk} item takes care of - tagging these files for you. + \c{res/} subdirectory. These files are tagged automatically + if the \l automaticSources property is enabled. \endtable */ @@ -125,3 +117,79 @@ \defaultvalue \c{true} */ + +/*! + \qmlproperty string Android.sdk::assetsDir + + The base directory for Android assets in the respective product. + + \note Android requires that the file name of this directory is always + \c "assets". + + \defaultvalue \c "src/main/assets" in the product source directory +*/ + +/*! + \qmlproperty bool Android.sdk::automaticSources + + If \c true, Java sources as well as Android resources, assets, and the + manifest file will be automatically included in the respective product + via wildcards. Set this property to \c false if you want to specify + these files manually. + + \defaultvalue \c true +*/ + +/*! + \qmlproperty string Android.sdk::manifestFile + + The file path to the Android manifest file. + This property is only relevant if \l automaticSources is enabled. + + \note Android requires that the file name is always "AndroidManifest.xml". + + \defaultvalue \c "src/main/AndroidManifest.xml" in the product source directory +*/ + +/*! + \qmlproperty string Android.sdk::packageName + + The package name of the respective product. The \c package attribute in the manifest file + will be set to this value automatically. + + \defaultvalue \c name +*/ + +/*! + \qmlproperty string Android.sdk::resourcesDir + + The base directory for Android resources in the respective product. + + \note Android requires that the file name of this directory is always + \c "res". + + \defaultvalue \c "src/main/res" in the product source directory +*/ + +/*! + \qmlproperty path Android.sdk::sourcesDir + + The base directory for Java sources. This property is only relevant if + \l automaticSources is enabled. + + \defaultvalue \c "src/main/java" in the product source directory +*/ + +/*! + \qmlproperty string Android.sdk::apkBaseName + + The base name of the APK file to to be built, that is, the file name + without the ".apk" extension. + + \defaultvalue \l packageName +*/ + +/*! + \qmlproperty stringList Android.sdk::aidlSearchPaths + Search paths for import statements to pass to the \c aidl tool via the \c{-I} option. +*/ diff --git a/doc/reference/modules/autotest-module.qdoc b/doc/reference/modules/autotest-module.qdoc new file mode 100644 index 000000000..ddd9e0078 --- /dev/null +++ b/doc/reference/modules/autotest-module.qdoc @@ -0,0 +1,69 @@ +/**************************************************************************** +** +** Copyright (C) 2018 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qbs. +** +** $QT_BEGIN_LICENSE:FDL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Free Documentation License Usage +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of +** this file. Please review the following information to ensure +** the GNU Free Documentation License version 1.3 requirements +** will be met: https://www.gnu.org/licenses/fdl-1.3.html. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \contentspage index.html + \qmltype autotest + \inqmlmodule QbsModules + \since Qbs 1.13 + + \brief Allows to fine-tune autotest execution. + + The \c autotest module provides properties that allow autotest applications to specify + how exactly they should be run. +*/ + +/*! + \qmlproperty bool autotest::allowFailure + + Autotests for which this property is \c true can return a non-zero exit code without + causing the entire \l AutotestRunner to fail. Use this for tests that are known + to be unreliable. + + \defaultvalue \c false +*/ + +/*! + \qmlproperty stringList autotest::arguments + + The list of arguments to invoke the autotest with. If not specified, then + the \l{AutotestRunner::arguments}{arguments} property of the + \l AutotestRunner that invokes the autotest is used. + + \nodefaultvalue +*/ + +/*! + \qmlproperty string autotest::workingDir + + The working directory for running the autotest. If not specified, then + the \l{AutotestRunner::workingDir}{workingDir} property of the + \l AutotestRunner that invokes the autotest is used. + + \nodefaultvalue +*/ + diff --git a/doc/reference/modules/cpp-module.qdoc b/doc/reference/modules/cpp-module.qdoc index 0818af28d..bf1080dd7 100644 --- a/doc/reference/modules/cpp-module.qdoc +++ b/doc/reference/modules/cpp-module.qdoc @@ -150,6 +150,14 @@ \li The rule that creates dynamic libraries (typically via a linker) attaches this tag to its output artifact. \row + \li \c{"dynamiclibrary_import"} + \li n/a + \li 1.0.0 + \li This tag is used for import libraries of dynamic libraries. For + example, the MSVC linker rule creates a \c{dynamiclibrary_import} + artifact \c{foo.lib} in addition to a \c{dynamiclibrary} artifact + \c{foo.dll}. + \row \li \c{"hpp"} \li \c{*.h}, \c{*.H}, \c{*.hpp}, \c{*.hxx}, \c{*.h++} \li 1.0.1 @@ -217,6 +225,31 @@ This file tag only has an effect with GCC-like toolchains. The linker needs to be \c{ld}-compatible. \endtable + + \section2 Relevant Job Pools + \target cpp-job-pools + + \table + \header + \li Pool + \li Since + \li Description + \row + \li \c{"assembler"} + \li 1.13 + \li The job pool used by rules that run the toolchain's assembler. This is only + relevant for direct invocations of the assembler binary, not for running it + indirectly via the compiler. + \row + \li \c{"compiler"} + \li 1.13 + \li The job pool used by rules that run a compiler. All language variants use + the same pool. + \row + \li \c{"linker"} + \li 1.13 + \li The job pool used by rules that run a linker. + \endtable */ /*! diff --git a/doc/reference/modules/protobufcpp-module.qdoc b/doc/reference/modules/protobufcpp-module.qdoc new file mode 100644 index 000000000..688f1d9e2 --- /dev/null +++ b/doc/reference/modules/protobufcpp-module.qdoc @@ -0,0 +1,91 @@ +/**************************************************************************** +** +** Copyright (C) 2018 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qbs. +** +** $QT_BEGIN_LICENSE:FDL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Free Documentation License Usage +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of +** this file. Please review the following information to ensure +** the GNU Free Documentation License version 1.3 requirements +** will be met: https://www.gnu.org/licenses/fdl-1.3.html. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \contentspage index.html + \qmltype protobuf.cpp + \inqmlmodule QbsModules + \since Qbs 1.13 + + \brief Provides support for protocol buffers for the C++ language. + + The \c protobuf.cpp module provides support for generating C++ headers + and sources from proto definition files using the \l protoc tool. + + \section2 Relevant File Tags + + \table + \header + \li Tag + \li Auto-tagged File Names + \li Since + \li Description + \row + \li \c{"protobuf.input"} + \li \c{*.proto} + \li 1.13.0 + \li Source files with this tag are considered inputs to the \c protoc compiler. + \endtable +*/ + +/*! + \qmlproperty string protobuf.cpp::protocBinary + + The command to invoke when compiling proto definition files. + + \defaultvalue \c auto-detected +*/ + +/*! + \qmlproperty pathList protobuf.cpp::importPaths + + The list of imports that are passed to the \c protoc tool via the \c --proto_path option. + These imports should contain the proto files. They are used to determine + the relative structure of the generated files. + \note The paths are passed to \c protoc in the same order as specified in this property and + \c protoc output may differ depending on that order. + + \defaultvalue \c [] +*/ + +/*! + \qmlproperty string protobuf.cpp::includePath + + The path where protobuf C++ headers are located. Set this property to override the + default location. + + \defaultvalue \c auto-detected +*/ + +/*! + \qmlproperty string protobuf.cpp::libraryPath + + The path where the protobuf C++ library is located. Set this property to override the + default location. + + \defaultvalue \c auto-detected +*/ diff --git a/doc/reference/modules/protobufobjc-module.qdoc b/doc/reference/modules/protobufobjc-module.qdoc new file mode 100644 index 000000000..07e6db759 --- /dev/null +++ b/doc/reference/modules/protobufobjc-module.qdoc @@ -0,0 +1,101 @@ +/**************************************************************************** +** +** Copyright (C) 2018 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qbs. +** +** $QT_BEGIN_LICENSE:FDL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Free Documentation License Usage +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of +** this file. Please review the following information to ensure +** the GNU Free Documentation License version 1.3 requirements +** will be met: https://www.gnu.org/licenses/fdl-1.3.html. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \contentspage index.html + \qmltype protobuf.objc + \inqmlmodule QbsModules + \since Qbs 1.13 + + \brief Provides support for protocol buffers for the Objective-C language. + + The \c protobuf.objc module provides support for generating Objective-C + headers and sources from proto definition files using the \l protoc tool. + + \section2 Relevant File Tags + + \table + \header + \li Tag + \li Auto-tagged File Names + \li Since + \li Description + \row + \li \c{"protobuf.input"} + \li \c{*.proto} + \li 1.13.0 + \li Source files with this tag are considered inputs to the \c protoc compiler. + \endtable +*/ + +/*! + \qmlproperty string protobuf.objc::protocBinary + + The command to invoke when compiling proto definition files. + + \defaultvalue \c auto-detected +*/ + +/*! + \qmlproperty pathList protobuf.objc::importPaths + + The list of imports that are passed to the \c protoc tool via the \c --proto_path option. + These imports should contain the proto files. They are used to determine + the relative structure of the generated files. + \note The paths are passed to \c protoc in the same order as specified in this property and + \c protoc output may differ depending on that order. + + \defaultvalue \c [] +*/ + +/*! + \qmlproperty string protobuf.objc::includePath + + The path where protobuf Objective-C headers are located. Set this property + to override the default location. + + \note If frameworkPath is specified, this property has no effect. + + \defaultvalue \c auto-detected +*/ + +/*! + \qmlproperty string protobuf.objc::libraryPath + + \note If frameworkPath is specified, this property has no effect. + + \defaultvalue \c auto-detected +*/ + +/*! + \qmlproperty string protobuf.objc::frameworkPath + + The path where \c Protobuf.framework is located. Set this property to override the + default location. + + \defaultvalue \c auto-detected +*/ diff --git a/doc/reference/modules/qt-android_support-module.qdoc b/doc/reference/modules/qt-android_support-module.qdoc new file mode 100644 index 000000000..f7ec595e3 --- /dev/null +++ b/doc/reference/modules/qt-android_support-module.qdoc @@ -0,0 +1,86 @@ +/**************************************************************************** +** +** Copyright (C) 2018 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qbs. +** +** $QT_BEGIN_LICENSE:FDL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Free Documentation License Usage +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of +** this file. Please review the following information to ensure +** the GNU Free Documentation License version 1.3 requirements +** will be met: https://www.gnu.org/licenses/fdl-1.3.html. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \contentspage index.html + \qmltype Qt.android_support + \inqmlmodule QbsModules + \brief Provides Qt support for the Android platform. + + The \c Qt.android_support module provides the glue for \QBS' + Qt and Android support. + It is automatically pulled in by \c Qt.core, so you do not need to + add an explicit dependency to it in your product, unless you want + to set one of its properties. +*/ + +/*! + \qmlproperty bool Qt.android_support::useMinistro + + Whether or not to use the Ministro service. If this property is enabled, then + the Qt libraries required by your application as well as some other resources + will not be packaged into the APK file, but are expected to be present on the + device at run time. + + \defaultvalue \c false +*/ + +/*! + \qmlproperty string Qt.android_support::qmlRootDir + + The root directory of the product's QML files. This information is passed to + the \c androiddeployqt tool, which will use it to decide which resources to + include in the APK file. + + \defaultvalue \c product.sourceDirectory +*/ + +/*! + \qmlproperty stringList Qt.android_support::deploymentDependencies + + Use this property to completely override the Qt deployment dependencies + of your app. Corresponds to qmake's ANDROID_DEPLOYMENT_DEPENDENCIES. + + \defaultvalue \c undefined +*/ + +/*! + \qmlproperty stringList Qt.android_support::extraPlugins + + Additional non-asset files to be packaged. Corresponds to qmake's ANDROID_EXTRA_PLUGINS. + + \defaultvalue \c undefined +*/ + +/*! + \qmlproperty bool Qt.android_support::verboseAndroidDeployQt + + Enable this property if you want verbose output from the + \c androiddeployqt tool. + + \defaultvalue \c false +*/ diff --git a/doc/reference/modules/qt-core-module.qdoc b/doc/reference/modules/qt-core-module.qdoc index 6bfa67f19..922b1889b 100644 --- a/doc/reference/modules/qt-core-module.qdoc +++ b/doc/reference/modules/qt-core-module.qdoc @@ -140,6 +140,15 @@ */ /*! + \qmlproperty bool Qt.core::enableBigResources + + Whether the Qt resource compiler is run in a two-pass fashion that supports + the creation of big resources. + + \defaultvalue \c{false} +*/ + +/*! \qmlproperty stringList Qt.core::config Corresponds to the default value of qmake's \c CONFIG variable. diff --git a/doc/reference/modules/qt-modules.qdoc b/doc/reference/modules/qt-modules.qdoc index c86c9cca6..638160104 100644 --- a/doc/reference/modules/qt-modules.qdoc +++ b/doc/reference/modules/qt-modules.qdoc @@ -98,7 +98,7 @@ \row \li \l{Qt.gui}{gui} \li Qt GUI - \li For more information , see \l {Qt.gui}. + \li For more information, see \l {Qt.gui}. \row \li help \li Qt Help @@ -139,6 +139,10 @@ \li Qt QML \li For more information, see \l{Qt.qml}. \row + \li qmltest + \li Qt Quick Test + \li + \row \li script \li Qt Script \li diff --git a/doc/reference/modules/qt-plugin_support-module.qdoc b/doc/reference/modules/qt-plugin_support-module.qdoc new file mode 100644 index 000000000..fe28ee907 --- /dev/null +++ b/doc/reference/modules/qt-plugin_support-module.qdoc @@ -0,0 +1,77 @@ +/**************************************************************************** +** +** Copyright (C) 2018 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qbs. +** +** $QT_BEGIN_LICENSE:FDL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Free Documentation License Usage +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of +** this file. Please review the following information to ensure +** the GNU Free Documentation License version 1.3 requirements +** will be met: https://www.gnu.org/licenses/fdl-1.3.html. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \contentspage index.html + \qmltype Qt.plugin_support + \inqmlmodule QbsModules + \since Qbs 1.13.0 + \brief Allows to fine-tune which Qt plugins get pulled in. + + The \c Qt.plugin_support module provides properties that allow users to control + which Qt plugins to pull into a product. + This is mostly relevant if Qt was built statically, in which case the respective + plugins are static libraries that get linked into your application or library. +*/ + +/*! + \qmlproperty varList Qt.plugin_support::pluginsByType + + Set this property if you want to override the set of plugins for a certain + plugin type. For instance, to disable all image plugins except the JPEG + one: + \code + Qt.plugin_support.pluginsByType: ({imageformats: "qjpeg"}) + \endcode + For plugin types that are not specifically overridden like this, the value in + defaultPluginsByType is used. + + \nodefaultvalue +*/ + +/*! + \qmlproperty var Qt.plugin_support::allPluginsByType + + Provides the complete set of plugins in a statically built Qt. + The value is a map. The keys are the plugin types, and the values + are lists of plugin names. + + \readonly +*/ + +/*! + \qmlproperty var Qt.plugin_support::defaultPluginsByType + + Provides the set of plugins that your application or library will + link to if you do not set pluginsByType. + The value is a map. The keys are the plugin types, and the values + are lists of plugin names. + The value depends on the Qt modules your product pulls in. + + \readonly +*/ + diff --git a/doc/reference/modules/texttemplate-module.qdoc b/doc/reference/modules/texttemplate-module.qdoc new file mode 100644 index 000000000..7d0c47a6d --- /dev/null +++ b/doc/reference/modules/texttemplate-module.qdoc @@ -0,0 +1,118 @@ +/**************************************************************************** +** +** Copyright (C) 2018 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qbs. +** +** $QT_BEGIN_LICENSE:FDL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Free Documentation License Usage +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of +** this file. Please review the following information to ensure +** the GNU Free Documentation License version 1.3 requirements +** will be met: https://www.gnu.org/licenses/fdl-1.3.html. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \contentspage index.html + \qmltype texttemplate + \inqmlmodule QbsModules + \since Qbs 1.13 + + \brief Provides support for text template files + + The \c texttemplate module provides support for text template files. + + \section2 Example + + Consider the following text file \e{greeting.txt.in}. + + \code + ${greeting} ${name}! + \endcode + + This can be used in a project like this: + + \code + Product { + type: ["text"] + files: ["greeting.txt.in"] + Depends { name: "texttemplate" } + texttemplate.dict: ({ + greeting: "Hello", + name: "World" + }) + } + \endcode + + Which will create the file \e{greeting.txt}. + + \code + Hello World! + \endcode + + + \section2 Placeholder Syntax + + A placeholder \c{${foo}} is replaced by its corresponding value in + \e{texttemplate.dict}. + Placeholder names consist of alphanumeric characters only. + + The placeholder \c{${$}} is always replaced with \c{$}. + If you need a literal \c{${foo}} in your template, use \c{${$}{foo}}. + + Placeholders that are not defined in the dictionary will produce an error. + + + \section2 Relevant File Tags + \target filetags-texttemplate + + \table + \header + \li Tag + \li Auto-tagged File Names + \li Since + \li Description + \row + \li \c{"texttemplate.input"} + \li \c{*.in} + \li 1.13.0 + \li Source files with this tag serve as inputs for the text template rule. + \endtable +*/ + +/*! + \qmlproperty var texttemplate::dict + + The dictionary containing values for all keys used in the template file. + + \defaultvalue \c{{}} +*/ + +/*! + \qmlproperty string texttemplate::outputFileName + + The output file name that is assigned to produced artifacts. + + \defaultvalue Complete base name of the input file +*/ + +/*! + \qmlproperty string texttemplate::outputTag + + The output tag that is assigned to produced artifacts. + + \defaultvalue \c{"text"} +*/ |