// Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only

// **********************************************************************
// NOTE: the sections are not ordered by their logical order to avoid
// reshuffling the file each time the index order changes (i.e., often).
// Run the fixnavi.pl script to adjust the links to the index order.
// **********************************************************************

/*!
    \page creator-targets.html
    \previouspage creator-how-tos.html

    \ingroup creator-how-to-manage-kits

    \title Add kits

    \QC groups settings used for building and running projects as \e kits
    to make cross-platform and cross-configuration development easier. Each kit
    consists of a set of values that define one environment, such as a
    \l{glossary-device}{device}, compiler, Qt version, and debugger command
    to use, and some metadata, such as an icon and a name for the kit. Once
    you have defined kits, you can select them to build and run projects.

    You can add kits for the desktop and for the following types of devices:

    \list
        \li \l{Developing for Android}{Android}
        \li \l{Developing for Bare Metal Devices}{Bare Metal}
        \li \l{\B2Q: Documentation}{\B2Q} (commercial only)
        \li \l{Add Docker devices}{Docker} (experimental)
        \li \l{Developing for iOS}{iOS}
        \li iOS Simulator
        \li \l{Developing for MCUs}{MCU} (commercial only)
        \li \l{Add a QNX Neutrino device}{QNX}
        \li \l{Developing for Remote Linux Devices}{Remote Linux}
        \li \l{Build applications for the web}{WebAssembly Runtime}
    \endlist

    To add kits:

    \list 1

        \li Select \preferences > \uicontrol Kits.
        \li Select \uicontrol Add to start from an empty kit or \uicontrol Clone
            to clone the selected kit and edit its preferences.
            \image qtcreator-preferences-kits.webp {Kits preferences}
        \li Set \l{Kits}{kit preferences} according to the build system and
            device type.

        \li Select \uicontrol OK to create the kit.

    \endlist

    \section1 Set the default kit

    \QC uses the \e {default kit} if it does not have enough information to
    choose the kit to use. To set the selected kit as the default kit,
    select \uicontrol {Make Default}.

    \sa {Manage Kits}{How To: Manage Kits}, {Compilers}, {Kits}
*/

/*!
    \page creator-preferences-kits.html
    \previouspage creator-reference.html

    \ingroup creator-reference-preferences-kits

    \target kits-tab
    \title Kits

    \brief Set kit preferences. A kit consists of a set of values that define
    one environment, such as a \e {device}, toolchain, Qt version, and debugger
    command to use.

    Typically, only a subset of the kit preferences is relevant for a particular
    setup. Therefore, \QC plugins register sets of relevant preferences that you
    can view and modify in \preferences >
    \uicontrol Kits. For example, if you use CMake to build all your projects,
    you can hide Qbs and qmake preferences by default.

    \image qtcreator-preferences-kits.webp {Kits preferences}

    \section1 Filtering Kit Preferences

    To hide and show preferences in the \uicontrol Kits tab for the
    current kit, select \uicontrol {Settings Filter}.

    To view and modify the preferences displayed when you add a new kit, select
    \uicontrol {Default Settings Filter}.

    \section1 Kit Preferences

    The following table summarizes the available kit preferences.

    \table
    \header
        \li Setting
        \li Value
    \row
        \li \uicontrol Name
        \li Name of the kit. You can use variables to generate the kit name
            based on the values you set in the other fields.

            Click the \inlineimage icons/qtcreator-desktopdevice-button.png icon next to the field,
            and select the image that is displayed in the kit selector for this kit.
            Select \uicontrol Browse to select an
            image in a supported file format (for example, PNG). The image is
            scaled to the size 64x64 pixels. For example, using the compiler
            logo as an icon allows you to easily see, which compiler is used to
            build the project for the selected kit.
    \row
        \li \uicontrol {File system name}
        \li Name for the kit to use as a part of directory names. This value is
            used for the \c CurrentKit:FileSystemName variable, which determines
            the name of the shadow build directory, for example.
    \row
        \li \uicontrol {Run device}
        \li \uicontrol {Type} is the type of the run device, and
            \uicontrol {Device} is the device to run applications on.
    \row
        \li \uicontrol {Build device}
        \li \uicontrol {Type} is the type of the build device, and
            \uicontrol {Device} is the device to build applications on.
    \row
        \li \uicontrol {Emulator skin}
        \li Skin to use for the \l {Emulator}{\B2Q Emulator Device}.
    \row
        \li \uicontrol {Compiler}
        \li C or C++ compiler that you use to build the project. You can add
            compilers to the list if they are installed on the development PC,
            but were not detected automatically. For more information, see
            \l{Add compilers}.

            This setting is used to tell the code model which compiler is used.
            If your project type and build tool support it, \QC also tells the
            build tool to use this compiler for building the project.

            \note qmake ignores the value of this field and fetches the compiler
            information from \uicontrol {Qt mkspec}, which you can change.
    \row
        \li \uicontrol Environment
        \li Select \uicontrol {Edit Build Environment} to modify
            environment variable values for build environments in
            the \uicontrol {Edit Build Environment} dialog.

            Select \uicontrol {Edit Run Environment} to modify
            environment variable values for run environments in
            the \uicontrol {Edit Run Environment} dialog.

            For more information about how to add and remove variable
            values, see \l{Edit environment settings}.
    \row
        \li \uicontrol {Force UTF-8 MSVC compiler output}
        \li Either switches the language of MSVC to English or keeps the
            language setting and just forces UTF-8 output, depending on the
            MSVC compiler used.
    \row
        \li \uicontrol Debugger
        \li Debugger to debug the project on the target platform. \QC
            automatically detects available debuggers and displays a
            suitable debugger in the field. You can add debuggers to the list.
            For more information, see \l{Add debuggers}.

            For Android kits, the \uicontrol {Android GDB server} field will
            display the path to GDB server executable.
    \row
        \li \uicontrol Sysroot
        \li Directory where the device image is located. If you are not
            cross-compiling, leave this field empty.
    \row
        \li \uicontrol {Qt version}
        \li Qt version to use for building the project. You can add Qt versions
            that \QC did not detect automatically. For more information, see
            \l{Add Qt versions}.

            \QC checks the directories listed in the \c{PATH} environment
            variable for the qmake executable. It refers to the qmake executable
            it finds as \b{Qt in PATH} and selects it as the Qt version
            to use for the \uicontrol Desktop kit that is created by default.

            \uicontrol {mkspec} is the name of the mkspec configuration that
            qmake uses. If you leave this field empty, qmake uses the default
            mkspec of the selected Qt version.
    \row
        \li \uicontrol {Qbs profile additions}
        \li Select \uicontrol Change to add settings to Qbs build profiles.
            For more information, see \l {Edit Qbs profiles}.
    \row
        \li \uicontrol {CMake Tool}
        \li CMake executable to use for building the project. Select
            \uicontrol Manage to add installed CMake executables to
            the list. For more information, see \l{Add CMake Tools}.
    \row
        \li \uicontrol {CMake generator}
        \li Select \uicontrol Change to edit the CMake Generator to use for
            producing project files. Only the generators
            with names beginning with the string \uicontrol CodeBlocks produce
            all the necessary data for the \QC code model. \QC displays a
            warning if you select a generator that is not supported.
            For more information, see \l{Using Ninja as a CMake Generator}.
    \row
        \li \uicontrol {CMake configuration}
        \li Select \uicontrol Change to edit the parameters of the CMake
            configuration for the kit.
    \row
        \li \uicontrol {Python}
        \li Select the Python version for the kit. Select \uicontrol Manage
            to add Python versions. For more information, see
            \l{Select the Python version}.
    \row
        \li \uicontrol {Meson tool}
        \li Meson tool to use for building the project. Select \uicontrol Manage
            to add installed Meson tools to the list. For more information, see
            \l{Adding Meson Tools}.
    \row
        \li \uicontrol {Ninja tool}
        \li Ninja tool to use for building the project with Meson. Select
            \uicontrol Manage to add installed Ninja tools to the list.
    \endtable

    \sa {Manage Kits}{How To: Manage Kits}, {Add CMake Tools},
    {Edit Qbs profiles}
*/
