aboutsummaryrefslogtreecommitdiffstats
path: root/doc/targets/qbs-target-apple-common.qdocinc
blob: 9b49d1554ba14528e6ddffe15b819a0942e29e31 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
/****************************************************************************
**
** 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$
**
****************************************************************************/
/*!

//! [xcode]

    \note \QBS does not yet support the Swift programming language.

    The \l{xcode} module contains properties and rules for Xcode-based
    development.

//! [xcode]

//! [building user interfaces]

    \section1 Building User Interfaces

    The \l{ib} module contains properties and rules for building
    Interface Builder documents, storyboards, asset catalogs, and icon sets.

//! [building user interfaces]

//! [creating app bundles]

    \section1 Creating App Bundles

    The \l{bundle} module contains properties and rules for
    building and working with Core Foundation bundles (application bundles and
    frameworks) on Apple platforms.

    To build an application product as a bundle, or a dynamic or static library
    product as a framework, add a dependency on the bundle module and set the
    \l{bundle::isBundle}{bundle.isBundle} property to \c true:

    \code
    Depends { name: "bundle" }
    bundle.isBundle: true
    \endcode

    \QBS also provides a number of powerful features to assist in creating the
    Info.plist file that is part of your bundle. In fact, you do not need to
    provide an Info.plist file at all. Instead, \QBS will generate one
    automatically with the necessary keys, based on the values of module
    properties set in the product.

    If you do specify an Info.plist file, \QBS may still inject additional keys
    into the final output from other sources. One notable source of Info.plist
    keys are \e partial Info.plist files which are generated as a result of
    compiling other resources like asset catalogs, XIBs/NIBs, and storyboards.

    You may also use the \c bundle.infoPlist property to apply a set of
    key-value pairs to be added to the final Info.plist. This can be used
    instead of or in addition to an actual Info.plist file on disk.

//! [creating app bundles]

//! [architectures and variants]

    \section1 Multiple Architectures and Build Variants

    \QBS uses \l{Multiplexing}{multiplexing} to create multi-architecture
    \e fat binaries and multi-variant frameworks, where a single framework can
    contain both a release and debug build of a library on Apple platforms.

    You can set the \c qbs.architectures property to a list of CPU architectures
    (such as \c x86, \c x86_64, \c armv7a, \c armv7k, and \c arm64), and the
    \c qbs.buildVariants property to a list of build variants (such as \c debug
    and \c release), and \QBS will transparently perform the necessary steps to
    produce the various artifacts and combine them into a single bundle.

    Since the individual build configurations are completely independent of one
    another, you can continue to use conditional branches in your projects such
    as the following:

    \code
    Properties {
        condition: qbs.buildVariant === "release"
        cpp.optimization: "small"
    }
    \endcode

//! [architectures and variants]

*/