// 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{Connecting Android Devices}{Android}
        \li \l{Connecting Bare Metal Devices}{Bare Metal}
        \li \l{https://doc.qt.io/Boot2Qt/b2qt-installation-guides.html}
            {Boot2Qt} (commercial only)
        \li \l{Emulator}{Boot2Qt Emulator} (commercial only)
        \li \l{Adding Docker Devices}{Docker} (experimental)
        \li \l{Connecting iOS Devices}{iOS}
        \li iOS Simulator
        \li \l{Connecting MCUs}{MCU} (commercial only)
        \li \l{Connecting QNX Devices}{QNX}
        \li \l{Connecting Remote Linux Devices}{Remote Linux}
        \li \l{Building 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-kits.png
        \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 {Activate kits for a project}, {Add debuggers}, {Add Qt versions},
    {Open projects}, {Compilers}, {Kits}
*/

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

    \ingroup creator-reference-preferences

    \title Kits

    \brief Sets kit preferences. A kit consists of a set of values that define
    one environment, such as a \e {device}, tool chain, 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-kits.png

    \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.
    \row
        \li \inlineimage icons/qtcreator-desktopdevice-button.png
        \li Image to use as an icon for the 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 type}
        \li Type of the run device.

            Double-click the icon next to the field to select the image that is
            displayed in the kit selector for this kit. You can use any
            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 {Run device}
        \li The device to run applications on.
    \row
        \li \uicontrol {Build device}
        \li The device to build applications on.

    \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 {Emulator skin}
        \li Skin to use for the \l {Emulator}{Boot2Qt 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.
    \row
        \li \uicontrol Environment
        \li Select \uicontrol Change to modify environment variable values for
            build environments in the \uicontrol {Edit Environment Changes}
            dialog. For more information about how to add and remove variable
            values, see \l{Batch 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 {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.
    \row
        \li \uicontrol {Qt mkspec}
        \li Name of the mkspec configuration that qmake uses. If you leave this
            field empty, it uses the default mkspec of the selected Qt version.
    \row
        \li \uicontrol {Additional Qbs profile settings}
        \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 {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 {Activate kits for a project}, {Open projects}, {Add CMake Tools},
    {Add compilers}, {Add debuggers}, {Add kits}, {Add Qt versions},
    {Edit Qbs profiles}
*/
