aboutsummaryrefslogtreecommitdiffstats
path: root/doc/reference
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@digia.com>2013-07-25 15:30:17 +0200
committerJoerg Bornemann <joerg.bornemann@digia.com>2013-09-19 11:31:44 +0200
commit1f993c4cfe232a3596a32d64207d67cb1cdb49a3 (patch)
tree0516859156c5b24a87335a2ec58917d86bbfd489 /doc/reference
parent79fe9d097c6923f93fc5e477556fb6e2e33539c1 (diff)
Restructure the reference part of the documentation.
It does not scale to repeat the whole contents of the reference manually in several tables of contents. Instead, make it opaque at the top-level and use the \group feature to get at least an automatic table of contents for the lowest level (items and modules at the moment). Change-Id: I80a3334a43f62481f74c21ad9d68e913c8b3098a Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Diffstat (limited to 'doc/reference')
-rw-r--r--doc/reference/items/export.qdoc62
-rw-r--r--doc/reference/items/filetagger.qdoc86
-rw-r--r--doc/reference/items/group.qbs45
-rw-r--r--doc/reference/items/group.qdoc142
-rw-r--r--doc/reference/items/product.qdoc147
-rw-r--r--doc/reference/items/project.qdoc91
-rw-r--r--doc/reference/items/properties.qdoc110
-rw-r--r--doc/reference/items/rule.qdoc108
-rw-r--r--doc/reference/items/subproject.qdoc77
-rw-r--r--doc/reference/items/transformer.qdoc106
-rw-r--r--doc/reference/modules/cpp-module.qdoc479
-rw-r--r--doc/reference/modules/qbs-module.qdoc231
-rw-r--r--doc/reference/reference.qdoc55
13 files changed, 1739 insertions, 0 deletions
diff --git a/doc/reference/items/export.qdoc b/doc/reference/items/export.qdoc
new file mode 100644
index 000000000..7e3f46b88
--- /dev/null
+++ b/doc/reference/items/export.qdoc
@@ -0,0 +1,62 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the Qt Build Suite.
+**
+** 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 Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Digia gives you certain additional
+** rights. These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+****************************************************************************/
+/*!
+ \contentspage list-of-items.html
+ \page export-item.html
+ \nextpage filetagger-item.html
+ \ingroup list-of-items
+
+ \title Export Item
+ \brief Exports dependencies and properties to other products.
+
+ An \c Export item can appear inside a \l{Product Item}. The properties attached to it will
+ take effect in all products that depend on the product inside which the product module is defined.
+ As an example, consider these two products:
+ \code
+ Product {
+ name: "A"
+ Export {
+ Depends { name: "cpp" }
+ cpp.includePaths: "."
+ }
+ }
+
+ Product {
+ name: "B"
+ Depends { name: "A" }
+ }
+ \endcode
+
+ The sources in product B will be able to use headers from product A without specifiying
+ the full path to them, because the include path has been made known to the compiler via
+ A's product module.
+
+ \note This relationship is transitive, so a product C depending on product B will also
+ get the include paths via A's product module.
+*/
diff --git a/doc/reference/items/filetagger.qdoc b/doc/reference/items/filetagger.qdoc
new file mode 100644
index 000000000..4aa66603d
--- /dev/null
+++ b/doc/reference/items/filetagger.qdoc
@@ -0,0 +1,86 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the Qt Build Suite.
+**
+** 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 Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Digia gives you certain additional
+** rights. These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+****************************************************************************/
+/*!
+ \contentspage list-of-items.html
+ \previouspage export-item.html
+ \page filetagger-item.html
+ \nextpage group-item.html
+ \ingroup list-of-items
+
+ \title FileTagger Item
+ \brief Maps file patterns to tags.
+
+ This item maps file patterns to tags. It 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:
+ \code
+ FileTagger {
+ pattern: "*.cpp"
+ fileTags: ["cpp"]
+ }
+ \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.
+
+ 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:
+
+ \code
+ Product {
+ Depends { name: "cpp" }
+ Group {
+ files: "*.cpp"
+ fileTags: "other"
+ }
+ }
+ \endcode
+
+ \section1 FileTagger Properties
+
+ \table
+ \header
+ \li Property
+ \li Type
+ \li Default
+ \li Description
+ \row
+ \li pattern
+ \li string
+ \li none
+ \li The pattern to match against. Supports the usual wildcards '*', '?' and '[]'.
+ \row
+ \li fileTags
+ \li list
+ \li empty list
+ \li Tags to attach to a product's files. These can then be matched by a rule.
+ \endtable
+*/
diff --git a/doc/reference/items/group.qbs b/doc/reference/items/group.qbs
new file mode 100644
index 000000000..8797effd3
--- /dev/null
+++ b/doc/reference/items/group.qbs
@@ -0,0 +1,45 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the Qt Build Suite.
+**
+** 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 Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Digia gives you certain additional
+** rights. These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+****************************************************************************/
+
+import qbs 1.0
+
+Project {
+ Product {
+//! [0]
+ Group {
+ name: "Word processing documents"
+ files: ["*.doc", "*.rtf"]
+ prefix: "**/"
+ qbs.install: true
+ qbs.installDir: "share"
+ excludeFiles: "do_not_install_this_file.*"
+ }
+//! [0]
+ }
+}
diff --git a/doc/reference/items/group.qdoc b/doc/reference/items/group.qdoc
new file mode 100644
index 000000000..db16612d0
--- /dev/null
+++ b/doc/reference/items/group.qdoc
@@ -0,0 +1,142 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the Qt Build Suite.
+**
+** 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 Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Digia gives you certain additional
+** rights. These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+****************************************************************************/
+
+/*!
+ \contentspage list-of-items.html
+ \previouspage filetagger-item.html
+ \page group-item.html
+ \nextpage product-item.html
+ \ingroup list-of-items
+
+ \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.
+ For example:
+
+ \code
+ Application {
+ Group {
+ name: "common files"
+ files: ["myclass.h", "myclass_common_impl.cpp"]
+ }
+ Group {
+ name: "Windows files"
+ condition: targetOS.contains("windows")
+ files: "myclass_win_impl.cpp"
+ }
+ Group {
+ name: "Linux files"
+ condition: targetOS.contains("linux")
+ files: "myclass_linux_impl.cpp"
+ }
+ Group {
+ name: "Files to install"
+ qbs.install: true
+ qbs.installDir: "share"
+ files "runtime_resource.txt"
+ }
+ }
+ \endcode
+ When specifying files, you can use the wildcards "*", "?" and "[]", which have their usual meaning.
+ By default, matching files are only picked up directly from the parent directory, but you can tell Qbs to
+ consider the whole directory tree. It is also possible to exclude certain files from the list.
+ The pattern ** used in a pathname expansion context will match all files and zero or more
+ directories and subdirectories.
+ For example:
+ \snippet reference/items/group.qbs 0
+
+ A group can also be used to attach properties to build artifacts such as executables or
+ libraries. In the following example, an application is installed to "<install root>/bin".
+ \code
+ Application {
+ Group {
+ fileTagsFilter: "application"
+ qbs.install: true
+ qbs.installDir: "bin"
+ }
+ }
+ \endcode
+
+ \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.
+ \row
+ \li prefix
+ \li string
+ \li empty string
+ \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 generated artifacts whose file tags intersect with the ones
+ listed here. Mutually exclusive with 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 If the same file appears in the files list of both the top level of a product and
+ a group and this property is true, then the file tags set via the group
+ replace the ones set via the product. If it is false, the "group tags" are added to
+ the "product tags".
+ \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
+*/
diff --git a/doc/reference/items/product.qdoc b/doc/reference/items/product.qdoc
new file mode 100644
index 000000000..814bd1266
--- /dev/null
+++ b/doc/reference/items/product.qdoc
@@ -0,0 +1,147 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the Qt Build Suite.
+**
+** 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 Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Digia gives you certain additional
+** rights. These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+****************************************************************************/
+/*!
+ \contentspage list-of-items.html
+ \previouspage group-item.html
+ \page product-item.html
+ \nextpage project-item.html
+ \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 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.
+ \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
+ \li The base file name of the product's target artifacts.
+ \row
+ \li destinationDirectory
+ \li string
+ \li "."
+ \li The directory where the target artifacts will be located. Relative to the build directory.
+ \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.
+ \row
+ \li moduleSearchPaths
+ \li stringList
+ \li \c project.moduleSearchPaths
+ \li The paths that are searched when looking for a module this product depends on.
+ For more information, see \l{Project Item}. Setting this
+ property here will overwrite the default value inherited from the project.
+ \endtable
+
+ The following properties are automatically set by qbs and usually are not changed by the user:
+
+ \table
+ \header
+ \li Property
+ \li Type
+ \li Description
+ \row
+ \li buildDirectory
+ \li string
+ \li The build directory for this product. This is the directory where generated files
+ are placed.
+ \row
+ \li sourceDirectory
+ \li string
+ \li The source directory for this product. This is the directory of the file where this
+ product is defined.
+ \endtable
+*/
diff --git a/doc/reference/items/project.qdoc b/doc/reference/items/project.qdoc
new file mode 100644
index 000000000..9280ba4b0
--- /dev/null
+++ b/doc/reference/items/project.qdoc
@@ -0,0 +1,91 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the Qt Build Suite.
+**
+** 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 Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Digia gives you certain additional
+** rights. These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+****************************************************************************/
+/*!
+ \contentspage list-of-items.html
+ \previouspage product-item.html
+ \page project-item.html
+ \nextpage subproject-item.html
+ \ingroup list-of-items
+
+ \title Project Item
+ \brief Represents a collection of products and properties.
+
+ A \c 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
+ Project {
+ references: [
+ "product1/product1.qbs",
+ "product2/product2.qbs"
+ ]
+ }
+ \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.
+
+ \table
+ \header
+ \li Property
+ \li Type
+ \li Default
+ \li Description
+ \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 condition
+ \li bool
+ \li true
+ \li Whether the project is enabled. If false, no products or sub-projects will be
+ collected.
+ \row
+ \li moduleSearchPaths
+ \li stringList
+ \li empty
+ \li The paths that are searched when looking for a module a product depends on.
+ All products in the project inherit this value by default.
+ In addition to what is given here, Qbs will also look in the directory where
+ the Qbs file defining this project is located, as well as in the paths
+ listed in the \c preferences.qbsPath setting.
+ \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.
+ \endtable
+*/
diff --git a/doc/reference/items/properties.qdoc b/doc/reference/items/properties.qdoc
new file mode 100644
index 000000000..32c20b7e3
--- /dev/null
+++ b/doc/reference/items/properties.qdoc
@@ -0,0 +1,110 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the Qt Build Suite.
+**
+** 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 Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Digia gives you certain additional
+** rights. These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+****************************************************************************/
+/*!
+ \contentspage list-of-items.html
+ \previouspage subproject-item.html
+ \page properties-item.html
+ \nextpage rule-item.html
+ \ingroup list-of-items
+
+ \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}.
+
+ The \c 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
+ Product {
+ Properties {
+ condition: qbs.targetOS.contains("windows")
+ cpp.defines: ["ON_WINDOWS"]
+ cpp.includePaths: ["extraWindowsIncludes"]
+ }
+ }
+ \endcode
+
+ Multiple \c 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
+ Product {
+ Properties {
+ condition: qbs.targetOS.contains("windows")
+ cpp.defines: ["ON_WINDOWS"]
+ cpp.includePaths: ["myWindowsIncludes"]
+ }
+ Properties {
+ condition: qbs.targetOS.contains("linux")
+ cpp.defines: ["ON_LINUX"]
+ cpp.includePaths: ["myLinuxIncludes"]
+ }
+ cpp.defines: ["ON_UNKNOWN_PLATFORM"]
+ }
+ \endcode
+ is equivalent to
+ \code
+ Product {
+ cpp.defines: {
+ if (qbs.targetOS.contains("windows"))
+ return ["ON_WINDOWS"];
+ if (qbs.targetOS.contains("linux"))
+ return ["ON_LINUX"];
+ return ["ON_UNKNOWN_PLATFORM"];
+ }
+ cpp.includePaths: {
+ if (qbs.targetOS.contains("windows"))
+ return ["ON_WINDOWS"];
+ if (qbs.targetOS.contains("linux"))
+ return ["ON_LINUX"];
+ return undefined;
+ }
+ }
+ \endcode
+
+ \c Properties items are never inherited. They are local to the file they appear in.
+
+ We suggest to use the \c Properties item for mutually exclusive conditions only. It is
+ especially useful if there are several properties to set, based on the same condition.
+
+ \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.
+ \endtable
+*/
diff --git a/doc/reference/items/rule.qdoc b/doc/reference/items/rule.qdoc
new file mode 100644
index 000000000..bc44b4ab3
--- /dev/null
+++ b/doc/reference/items/rule.qdoc
@@ -0,0 +1,108 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the Qt Build Suite.
+**
+** 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 Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Digia gives you certain additional
+** rights. These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+****************************************************************************/
+/*!
+ \contentspage list-of-items.html
+ \previouspage properties-item.html
+ \page rule-item.html
+ \nextpage transformer-item.html
+ \ingroup list-of-items
+
+ \title Rule Item
+ \brief Creates transformers for input tags.
+
+ A \e {multiplex rule} creates one \e transformer that takes all
+ input artifacts with the matching input file tag and creates
+ one or more artifacts (e.g. C++ linker).
+ A \e {non-multiplex rule} creates one transformer per matching input file (e.g. C++
+ compiler).
+
+ \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 and
+ transformer 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.
+ \row
+ \li usings
+ \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. Also, each output artifact of this rule will be dependent on
+ those artifacts.
+ \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.
+ \row
+ \li scanners
+ \li string list
+ \li undefined
+ \li List of dependency scanner ids for this rule. The scanners are
+ run just before the prepare script is executed.
+ \row
+ \li prepare
+ \li script
+ \li undefined
+ \li Script that prepares the commands to transform the inputs to outputs.
+ \endtable
+
+*/
diff --git a/doc/reference/items/subproject.qdoc b/doc/reference/items/subproject.qdoc
new file mode 100644
index 000000000..64aaa86fe
--- /dev/null
+++ b/doc/reference/items/subproject.qdoc
@@ -0,0 +1,77 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the Qt Build Suite.
+**
+** 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 Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Digia gives you certain additional
+** rights. These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+****************************************************************************/
+/*!
+ \contentspage list-of-items.html
+ \previouspage project-item.html
+ \page subproject-item.html
+ \nextpage properties-item.html
+ \ingroup list-of-items
+
+ \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
+ the surrounding project:
+ \code
+ SubProject {
+ filePath: "subdir/project.qbs"
+ Properties {
+ name: "A sub-project"
+ }
+ }
+ \endcode
+
+ If you don't need to set any properties on the sub-project, you can also use the \c references
+ property, the same way you would do for a product:
+ \code
+ references: "subdir/project.qbs"
+ \endcode
+
+ It is also possible to nest \c Project items directly in the same file.
+
+ \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
+*/
diff --git a/doc/reference/items/transformer.qdoc b/doc/reference/items/transformer.qdoc
new file mode 100644
index 000000000..2f3e26777
--- /dev/null
+++ b/doc/reference/items/transformer.qdoc
@@ -0,0 +1,106 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the Qt Build Suite.
+**
+** 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 Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Digia gives you certain additional
+** rights. These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+****************************************************************************/
+/*!
+ \contentspage list-of-items.html
+ \previouspage rule-item.html
+ \page transformer-item.html
+ \ingroup list-of-items
+
+ \title Transformer Item
+ \brief Creates files, typically from other files.
+
+ A \e transformer takes zero or more inputs and produces one or more output artifacts
+ from them. The following transformer creates one output file from one input file:
+ \code
+ Transformer {
+ inputs: "raw_input.txt"
+ Artifact {
+ fileName: "processed_input.txt"
+ fileTags: "processed_file"
+ }
+ prepare: {
+ var cmd = new JavaScriptCommand();
+ cmd.description = "Processing '" + input.fileName + "'";
+ cmd.highlight = "codegen";
+ cmd.sourceCode = function() {
+ var file = new TextFile(input.fileName);
+ var content = file.readAll();
+ content = content.replace(/\r\n/g, "\n");
+ file = new TextFile(output.fileName, TextFile.WriteOnly);
+ file.truncate();
+ file.write(content);
+ file.close();
+ }
+ return cmd;
+ }
+ }
+ \endcode
+ This example exhibits some interesting features of transformers:
+ \list
+ \li If there is only one input file, the property \c input is available to refer to it;
+ the \c inputs property is disabled.
+ \li The filenames of the output artifacts are available as \c outputs, unless there is
+ only one of them, in which case the same rule applies as for inputs.
+ \endlist
+
+ A \c Transformer is always attached to a \c Product, possibly indirectly via a \c Module.
+
+ \section1 Transformer Properties
+
+ \table
+ \header
+ \li Property
+ \li Type
+ \li Default
+ \li Description
+ \row
+ \li inputs
+ \li stringList
+ \li empty list
+ \li The list of inputs to the transformer.
+ \row
+ \li prepare
+ \li list of Javascript commands
+ \li empty list
+ \li The commands that the transformer runs. These typically read from the input files and
+ write to the output files in some way.
+ \row
+ \li condition
+ \li bool
+ \li true
+ \li If true, the transformer is enabled, otherwise it does nothing.
+ \row
+ \li explicitlyDependsOn
+ \li stringList
+ \li \c{undefined}
+ \li A list of file tags. All output artifacts of this transformer will have a dependency
+ to all artifacts with the given file tags.
+ \endtable
+
+*/
diff --git a/doc/reference/modules/cpp-module.qdoc b/doc/reference/modules/cpp-module.qdoc
new file mode 100644
index 000000000..24e3d3eca
--- /dev/null
+++ b/doc/reference/modules/cpp-module.qdoc
@@ -0,0 +1,479 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the Qt Build Suite.
+**
+** 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 Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Digia gives you certain additional
+** rights. These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+****************************************************************************/
+
+/*!
+ \contentspage index.html
+ \page cpp-module.html
+ \ingroup list-of-modules
+
+ \title Module cpp
+ \brief Provides C/C++ support.
+
+ The \c cpp module contains the properties and rules for toolchains of the C/C++ family.
+ On OS X this includes support for Objective-C/C++.
+
+ \section1 General Properties
+
+
+ \section2 architecture
+
+ \table
+ \row \li \b{Type:} \li \c{string}
+ \row \li \b{Default:} \li \c{qbs.architecture}
+ \endtable
+
+ Target architecture. See \c{qbs.architecture}.
+
+ \section2 debugInformation
+
+ \table
+ \row \li \b{Type:} \li \c{bool}
+ \row \li \b{Default:} \li \c{qbs.debugInformation}
+ \endtable
+
+ Generate debug information. See \c{qbs.debugInformation}.
+
+ \section2 defines
+
+ \table
+ \row \li \b{Type:} \li \c{stringList}
+ \row \li \b{Default:} \li \c{undefined}
+ \endtable
+
+ List of preprocessor macros that gets passed to the compiler.
+ To set macro values use the following syntax:
+ \code
+ cpp.defines: ["USE_COLORS=1", 'COLOR_STR="blanched almond"']
+ \endcode
+
+ \section2 platformDefines
+
+ \table
+ \row \li \b{Type:} \li \c{stringList}
+ \row \li \b{Default:} \li \c{undefined}
+ \endtable
+
+ List of preprocessor macros that are used for all projects that are built for the current
+ target platform. User project files usually do not set this property.
+
+ \section2 compilerDefines
+
+ \table
+ \row \li \b{Type:} \li \c{stringList}
+ \row \li \b{Default:} \li \c{undefined}
+ \endtable
+
+ List of preprocessor macros that are used for all projects that are using the current toolchain.
+ User project files usually do not set this property.
+
+ \section2 includePaths
+
+ \table
+ \row \li \b{Type:} \li \c{pathList}
+ \row \li \b{Default:} \li \c{undefined}
+ \endtable
+
+ List of include paths. Relative paths are considered to be relative to the .qbs product file
+ they are used in.
+
+ \section2 systemIncludePaths
+
+ \table
+ \row \li \b{Type:} \li \c{pathList}
+ \row \li \b{Default:} \li \c{undefined}
+ \endtable
+
+ List of include paths that are passed as system include paths to the compiler.
+ For header files in those paths warnings will be ignored.
+ Relative paths are considered to be relative to the .qbs product file they are used in.
+
+ \section2 libraryPaths
+
+ \table
+ \row \li \b{Type:} \li \c{pathList}
+ \row \li \b{Default:} \li \c{undefined}
+ \endtable
+
+ List of library search paths. Relative paths are considered to be relative to the .qbs product
+ file they are used in.
+
+ \section2 dynamicLibraries
+
+ \table
+ \row \li \b{Type:} \li \c{stringList}
+ \row \li \b{Default:} \li \c{undefined}
+ \endtable
+
+ List of dynamic libraries to be linked. If the library is part of your project, consider
+ using a Depends item instead.
+
+ \section2 staticLibraries
+
+ \table
+ \row \li \b{Type:} \li \c{stringList}
+ \row \li \b{Default:} \li \c{undefined}
+ \endtable
+
+ List of static libraries to be linked. If the library is part of your project, consider
+ using a Depends item instead.
+
+ \section2 prefixHeaders
+
+ \table
+ \row \li \b{Type:} \li \c{pathList}
+ \row \li \b{Default:} \li \c{undefined}
+ \endtable
+
+ List of files to automatically include at the beginning of each source file in the product.
+
+ \section2 precompiledHeader
+
+ \table
+ \row \li \b{Type:} \li \c{string}
+ \row \li \b{Default:} \li \c{undefined}
+ \endtable
+
+ Name of the C++ header file to be precompiled.
+
+ \section2 precompiledHeaderDir
+
+ \table
+ \row \li \b{Type:} \li \c{string}
+ \row \li \b{Default:} \li \c{product.buildDirectory}
+ \endtable
+
+ The directory that will contain the precompiled C++ header file.
+ Usually you won't need to set this.
+
+ \section2 optimization
+
+ \table
+ \row \li \b{Type:} \li \c{string}
+ \row \li \b{Default:} \li \c{qbs.optimization}
+ \endtable
+
+ Optimization level. See \c{qbs.optimization}.
+
+ \section2 treatWarningsAsErrors
+
+ \table
+ \row \li \b{Type:} \li \c{bool}
+ \row \li \b{Default:} \li \c{false}
+ \endtable
+
+ Warnings will be handled as errors and cause the build to fail.
+
+ \section2 warningLevel
+
+ \table
+ \row \li \b{Type:} \li \c{string}
+ \row \li \b{Default:} \li \c{"all"}
+ \endtable
+
+ Specifies the installation directory for the files of a product or a \c{Group}. The value of
+ this property is a path that is relative to the install root.
+
+ \section2 commonCompilerFlags
+
+ \table
+ \row \li \b{Type:} \li \c{stringList}
+ \row \li \b{Default:} \li undefined
+ \endtable
+
+ Flags that are added to all compilation commands independently of the language.
+
+ \section2 cppFlags
+
+ \table
+ \row \li \b{Type:} \li \c{stringList}
+ \row \li \b{Default:} \li undefined
+ \endtable
+
+ Additional flags for the C preprocessor.
+
+ \section2 cFlags
+
+ \table
+ \row \li \b{Type:} \li \c{stringList}
+ \row \li \b{Default:} \li undefined
+ \endtable
+
+ Additional flags for the C compiler.
+
+ \section2 cxxFlags
+
+ \table
+ \row \li \b{Type:} \li \c{stringList}
+ \row \li \b{Default:} \li undefined
+ \endtable
+
+ Additional flags for the C++ compiler.
+
+ \section2 objcFlags
+
+ \table
+ \row \li \b{Type:} \li \c{stringList}
+ \row \li \b{Default:} \li undefined
+ \endtable
+
+ Additional flags for the Objective-C compiler.
+
+ \section2 objcxxFlags
+
+ \table
+ \row \li \b{Type:} \li \c{stringList}
+ \row \li \b{Default:} \li undefined
+ \endtable
+
+ Additional flags for the Objective-C++ compiler.
+
+ \section2 linkerFlags
+
+ \table
+ \row \li \b{Type:} \li \c{stringList}
+ \row \li \b{Default:} \li undefined
+ \endtable
+
+ Additional flags for the linker.
+
+ \section2 compilerName
+
+ \table
+ \row \li \b{Type:} \li \c{string}
+ \row \li \b{Default:} \li determined by qbs-detect-toolchains
+ \endtable
+
+ Name of the compiler binary. This is set in the build profile.
+
+ \section2 compilerPath
+
+ \table
+ \row \li \b{Type:} \li \c{string}
+ \row \li \b{Default:} \li determined by qbs-detect-toolchains
+ \endtable
+
+ Directory where the compiler binary is located. This is set in the build profile.
+
+ \section2 compilerWrapper
+
+ \table
+ \row \li \b{Type:} \li \c{stringList}
+ \row \li \b{Default:} \li \c{undefined}
+ \endtable
+
+ Wrapper binary and its arguments for wrapping compiler calls.
+ This is useful for compiler wrappers like ccache and alike.
+
+
+ \section1 Properties Specific to iOS and OS X
+
+ \section2 frameworkPaths
+
+ \table
+ \row \li \b{Type:} \li \c{pathList}
+ \row \li \b{Default:} \li \c{undefined}
+ \endtable
+
+ List of framework search paths. Relative paths are considered to be relative to the .qbs product
+ file they are used in.
+
+ \section2 systemFrameworkPaths
+
+ \table
+ \row \li \b{Type:} \li \c{pathList}
+ \row \li \b{Default:} \li \c{undefined}
+ \endtable
+
+ List of framework search paths. Relative paths are considered to be relative to the .qbs product
+ file they are used in. Header files in frameworks in those paths will not cause warnings.
+
+ \section2 frameworks
+
+ \table
+ \row \li \b{Type:} \li \c{stringList}
+ \row \li \b{Default:} \li \c{undefined}
+ \endtable
+
+ List of frameworks to be linked.
+ If the framework is part of your project, consider using a Depends item instead.
+
+ \section2 weakFrameworks
+
+ \table
+ \row \li \b{Type:} \li \c{stringList}
+ \row \li \b{Default:} \li \c{undefined}
+ \endtable
+
+ List of frameworks to be weakly linked.
+ If the framework is part of your project, consider using a Depends item instead.
+
+ \section2 infoPlistFile
+
+ \table
+ \row \li \b{Type:} \li \c{path}
+ \row \li \b{Default:} \li \c{undefined}
+ \endtable
+
+ Path to the Info.plist file used by the bundle.
+ The contents of this file will be aggregated with the values in \c{infoPlist}.
+ If \c{infoPlistFile} and \c{infoPlist} contain the same key, the latter will take precedence,
+ but may also be overridden during postprocessing (see \c{processInfoPlist}).
+ If undefined, will not be taken into account.
+
+ \section2 infoPlist
+
+ \table
+ \row \li \b{Type:} \li \c{object}
+ \row \li \b{Default:} \li \c{undefined}
+ \endtable
+
+ Dictionary of key-value pairs to add to the bundle's Info.plist.
+ The contents of this property will be aggregated with the values from \c{infoPlistFile}.
+ If \c{infoPlist} and \c{infoPlistFile} contain the same key, the former will take precedence,
+ but may also be overridden during postprocessing (see \c{processInfoPlist}).
+ If undefined, will not be taken into account.
+
+ \section2 processInfoPlist
+
+ \table
+ \row \li \b{Type:} \li \c{bool}
+ \row \li \b{Default:} \li \c{true}
+ \endtable
+
+ Whether to perform post-processing on the aggregated Info.plist contents.
+ If this property is \c{true}, various post-processing operations will be applied to the
+ bundle's property list dictionary after it has been aggregated from the contents of the file
+ specified by the \c{infoPlistFile} property and the \c{infoPlist} property.
+ First, values from a list of defaults will be added to the dictionary if they were not already
+ present. Then, values from the AdditionalInfo key of the platform SDK's Info.plist file will be
+ added to the dictionary if they were not already present, as well as some other miscellaneous
+ keys, such as BuildMachineOSBuild and UIDeviceFamily (on iOS).
+ Finally, variable expansions will be performed such that substrings of the form ${VAR} will be
+ replaced with their corresponding environment variables.
+
+ \section2 infoPlistFormat
+
+ \table
+ \row \li \b{Type:} \li \c{string}
+ \row \li \b{Allowed Values:} \li \c{"xml1"}, \c{"binary1"}, \c{"json"}, \c{"same-as-input"}
+ \row \li \b{Default:} \li \c{"binary1"} for iOS; \c{"same-as-input"} or \c{"xml1"}
+ for OS X depending on whether \c{infoPlistFile} is
+ specified; undefined for all other operating systems.
+ \endtable
+
+ The file format to write the product's resulting Info.plist in.
+
+
+ \section1 Properties Specific to iOS
+
+ \section2 minimumIosVersion
+
+ \table
+ \row \li \b{Type:} \li \c{string}
+ \row \li \b{Default:} \li undefined, but may be set by generated profiles
+ \endtable
+
+ A version number in the format [major].[minor] indicating the earliest version of OS X that the
+ product should run on. Passes -miphoneos-version-min=<version> to the compiler.
+ If undefined, compiler defaults will be used.
+
+
+ \section1 Properties Specific to OS X
+
+ \section2 minimumOsxVersion
+
+ \table
+ \row \li \b{Type:} \li \c{string}
+ \row \li \b{Default:} \li undefined, but may be set by generated profiles
+ \endtable
+
+ A version number in the format [major].[minor] indicating the earliest version of OS X that the
+ product should run on. Passes -mmacosx-version-min=<version> to the compiler.
+ If undefined, compiler defaults will be used.
+
+
+ \section1 Properties Specific to Unix Platforms
+
+ \section2 positionIndependentCode
+
+ \table
+ \row \li \b{Type:} \li \c{bool}
+ \row \li \b{Default:} \li \c{undefined}
+ \endtable
+
+ Generate position independent code.
+
+ \section2 rpaths
+
+ \table
+ \row \li \b{Type:} \li \c{stringList}
+ \row \li \b{Default:} \li \c{undefined}
+ \endtable
+
+ List of rpaths that are passed to the linker.
+
+ \section2 visibility
+
+ \table
+ \row \li \b{Type:} \li \c{string}
+ \row \li \b{Allowed Values:} \li \c{"default"}, \c{"hidden"}, \c{"hiddenInlines"}
+ \row \li \b{Default:} \li \c{"default"}
+ \endtable
+
+ Visibility level for exported symbols.
+
+
+ \section1 Properties Specific to Windows
+
+ \section2 windowsApiCharacterSet
+
+ \table
+ \row \li \b{Type:} \li \c{string}
+ \row \li \b{Allowed Values:} \li \c{"unicode"}, \c{"mbcs"}, \c{undefined}
+ \row \li \b{Default:} \li \c{"unicode"}
+ \endtable
+
+ Specifies the character set used in the Win32 API. "unicode" will define the
+ preprocessor symbols UNICODE and _UNICODE, "mbcs" will define _MBCS, and
+ setting the value to undefined will use the default character set.
+
+ \section2 minimumWindowsVersion
+
+ \table
+ \row \li \b{Type:} \li \c{string}
+ \row \li \b{Default:} \li undefined, but may be set by generated profiles
+ \endtable
+
+ A version number in the format [major].[minor] indicating the earliest version of Windows that
+ the product should run on. Defines WINVER, _WIN32_WINNT, and _WIN32_WINDOWS, and applies a
+ version number to the linker flags /SUBSYSTEM and /OSVERSION for MSVC or
+ -Wl,--major-subsystem-version, -Wl,--minor-subsystem-version, -Wl,--major-os-version and
+ -Wl,--minor-os-version for MinGW.
+ If undefined, compiler defaults will be used.
+*/
diff --git a/doc/reference/modules/qbs-module.qdoc b/doc/reference/modules/qbs-module.qdoc
new file mode 100644
index 000000000..14357a922
--- /dev/null
+++ b/doc/reference/modules/qbs-module.qdoc
@@ -0,0 +1,231 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the Qt Build Suite.
+**
+** 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 Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Digia gives you certain additional
+** rights. These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+****************************************************************************/
+
+/*!
+ \contentspage list-of-modules.html
+ \page qbs-module.html
+ \ingroup list-of-modules
+
+ \title Module qbs
+ \brief Comprises general properties.
+
+ The \c qbs module is implicitly loaded in every product. It contains properties of the current
+ build environment, independent of the used programming languages and toolchains.
+
+
+ \section1 buildVariant
+
+ \table
+ \row \li \b{Type:} \li \c{string}
+ \row \li \b{Default:} \li \c{"debug"}
+ \endtable
+
+ Contains the name of the build variant for the current build.
+
+
+ \section1 debugInformation
+
+ \table
+ \row \li \b{Type:} \li \c bool
+ \row \li \b{Default:} \li \c{true} for debug builds, \c{false} otherwise
+ \endtable
+
+ Specifies whether to generate debug information.
+
+
+ \section1 enableDebugCode
+
+ \table
+ \row \li \b{Type:} \li \c bool
+ \row \li \b{Default:} \li \c{true} for debug builds, \c{false} otherwise
+ \endtable
+
+ Specifies whether to compile debug code in the product.
+ This is typically enabled for debug builds and disabled for release builds.
+
+
+ \section1 optimization
+
+ \table
+ \row \li \b{Type:} \li \c{string}
+ \row \li \b{Allowed Values:} \li \c{"none"}, \c{"fast"}, \c{"small"}
+ \row \li \b{Default:} \li \c{"none"} for debug builds, \c{"fast"} for release builds
+ \endtable
+
+ Specifies the general type of optimization that should be performed by all toolchains.
+
+
+ \section1 hostOS
+
+ \table
+ \row \li \b{Type:} \li \c{stringList} (read only)
+ \endtable
+
+ This property is set by qbs internally and specifies the OS qbs is running on.
+ The possible values for this property are the values of \c targetOS,
+ though some may not be supported.
+
+
+ \section1 targetOS
+
+ \table
+ \row \li \b{Type:} \li \c{stringList}
+ \row \li \b{Possible Values:} \li one or more of:
+ \c{"aix"},
+ \c{"android"},
+ \c{"blackberry"},
+ \c{"bsd"},
+ \c{"bsd4"},
+ \c{"bsdi"},
+ \c{"cygwin"},
+ \c{"darwin"},
+ \c{"dgux"},
+ \c{"dynix"},
+ \c{"freebsd"},
+ \c{"hpux"},
+ \c{"hurd"},
+ \c{"integrity"},
+ \c{"ios"},
+ \c{"ios-simulator"},
+ \c{"irix"},
+ \c{"linux"},
+ \c{"lynx"},
+ \c{"osx"},
+ \c{"msdos"},
+ \c{"nacl"},
+ \c{"netbsd"},
+ \c{"openbsd"},
+ \c{"os2"},
+ \c{"os2emx"},
+ \c{"osf"},
+ \c{"qnx"},
+ \c{"qnx6"},
+ \c{"reliant"},
+ \c{"sco"},
+ \c{"solaris"},
+ \c{"symbian"},
+ \c{"ultrix"},
+ \c{"unix"},
+ \c{"unixware"},
+ \c{"vxworks"},
+ \c{"windows"},
+ \c{"windowsce"},
+ \c{"windowsphone"},
+ \c{"winrt"}
+ \endtable
+
+ Specifies the OS you want to build the project for.
+ This is typically set in a profile.
+
+
+ \section1 architecture
+
+ \table
+ \row \li \b{Type:} \li \c{string}
+ \endtable
+
+ Specifies the target platform's processor architecture.
+ This is typically set in a profile.
+ Currently used values are: \c{"x86"}, \c{"x86_64"} and \c{"arm"}.
+
+
+ \section1 endianness
+
+ \table
+ \row \li \b{Type:} \li \c{string}
+ \row \li \b{Allowed Values:} \li \c{"big"}, \c{"little"}, \c{"mixed"}
+ \row \li \b{Default:} \li \c{undefined}
+ \endtable
+
+ Specifies the endianness of the target platform's processor architecture.
+
+
+ \section1 toolchain
+
+ \table
+ \row \li \b{Type:} \li \c{stringList}
+ \row \li \b{Allowed Values:} \li \c{"gcc"}, \c{"llvm"}, \c{"clang"}, \c{"mingw"}, \c{"msvc"}
+ \endtable
+
+ Specifies the attributes of the toolchain that is going to be used for this build.
+
+
+ \section1 sysroot
+
+ \table
+ \row \li \b{Type:} \li \c{string}
+ \row \li \b{Default:} \li \c{undefined}
+ \endtable
+
+ Specifies the sysroot of the target platform. This property is typically set in a profile
+ for cross-compiling.
+
+
+ \section1 install
+
+ \table
+ \row \li \b{Type:} \li \c{bool}
+ \row \li \b{Default:} \li \c{false}
+ \endtable
+
+ Specifies whether to install a certain set of files.
+ This is typically set in a \c{Group} item to mark a number of files as installable.
+
+
+ \section1 installDir
+
+ \table
+ \row \li \b{Type:} \li \c{string}
+ \row \li \b{Default:} \li \c{undefined}
+ \endtable
+
+ Specifies the installation directory for the files of a product or a \c{Group}. The value of
+ this property is a path that is relative to \c installPrefix.
+
+ \section1 installPrefix
+
+ \table
+ \row \li \b{Type:} \li \c{string}
+ \row \li \b{Default:} \li \c{empty}
+ \endtable
+
+ Specifies the global installation prefix. It is implicitly prepended to all values
+ of \c installDir. The \c installPrefix itself is relative to the install root, which is not
+ a property of qbs, but an external installation parameter.
+
+ \section1 pathListSeparator
+
+ \table
+ \row \li \b{Type:} \li \c{string}
+ \endtable
+
+ Holds the platform-specific separator for path list that is used in environment variables or
+ other contexts. E.g. on Windows is this \c{";"}, on Unix derivatives \c{":"}.
+*/
+
diff --git a/doc/reference/reference.qdoc b/doc/reference/reference.qdoc
new file mode 100644
index 000000000..09b824a78
--- /dev/null
+++ b/doc/reference/reference.qdoc
@@ -0,0 +1,55 @@
+/****************************************************************************
+**
+** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the Qt Build Suite.
+**
+** 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 Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Digia gives you certain additional
+** rights. These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+****************************************************************************/
+/*!
+ \contentspage index.html
+ \previouspage shell.html
+ \page reference.html
+
+ \title Reference
+
+ \list
+ \li \l{List of Language Items}
+ \li \l{List of Built-in Services} [tbd]
+ \li \l{List of Modules}
+ \endlist
+*/
+
+/*!
+ \contentspage reference.html
+ \group list-of-modules
+ \title List of Modules
+ These are the modules shipped with qbs.
+*/
+
+/*!
+ \contentspage reference.html
+ \group list-of-items
+ \title List of Language Items
+ Qbs provides the following built-in QML items to define projects.
+*/