aboutsummaryrefslogtreecommitdiffstats
path: root/doc/reference/items/language/product.qdoc
diff options
context:
space:
mode:
Diffstat (limited to 'doc/reference/items/language/product.qdoc')
-rw-r--r--doc/reference/items/language/product.qdoc189
1 files changed, 189 insertions, 0 deletions
diff --git a/doc/reference/items/language/product.qdoc b/doc/reference/items/language/product.qdoc
new file mode 100644
index 000000000..4dd3089ae
--- /dev/null
+++ b/doc/reference/items/language/product.qdoc
@@ -0,0 +1,189 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 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 probe-item.html
+ \page product-item.html
+ \nextpage project-item.html
+ \ingroup list-of-language-items
+ \ingroup list-of-items
+
+ \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
+ 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
+ Product {
+ name: "helloworld"
+ type: "application"
+ files: "main.cpp"
+ 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
+ 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:
+ \list
+ \li Application
+ \li CppApplication
+ \li DynamicLibrary
+ \li StaticLibrary
+ \endlist
+ Therefore, the above example could also be written like this:
+ \code
+ CppApplication {
+ name: "helloworld"
+ files: "main.cpp"
+ }
+ \endcode
+ 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.
+
+ \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.
+ \code
+ CppApplication {
+ name: "hello" + "world" // valid
+ }
+ CppApplication {
+ name: "app_for_" + qbs.targetOS.join("_") // invalid
+ }
+ \endcode
+ To change the name of your product's target artifact, modify \c{Product.targetName}
+ instead.
+ \row
+ \li profiles
+ \li stringList
+ \li \c{[project.profile]}
+ \li The profiles for which the product should be built. For each profile listed here,
+ one instance of the product will be built according to the properties set in
+ the respective profile.
+ This property is only relevant for projects that require products being built for
+ different architectures. Otherwise it can be left at its default value.
+ \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.
+ \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
+
+ 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 profile
+ \li string
+ \li The profile for building this particular instance of the product. Derived
+ automatically from the \c profiles property.
+ \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
+*/