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

    /*!
    \page creator-developing-generic-linux.html
    \previouspage creator-reference.html

    \ingroup creator-reference-devices

    \title Developing for remote Linux devices

    \quotation
    \l {Remote Linux}{How to: Develop for remote Linux}
    \endquotation

    \brief Connect generic Linux devices to the computer to run,
    debug, and analyze applications built for them from \QC.

    If you have a toolchain for building applications for embedded Linux
    devices installed on the computer, add it to a \l{Managing kits}{kit}
    with the device type \uicontrol {Remote Linux Device} to
    build applications for and run them on the devices.

    Use a wizard to connect remote Linux devices to the computer. You can edit
    the settings later in \preferences > \uicontrol Devices > \uicontrol Devices.

    \image {qtcreator-preferences-devices-remote-linux.webp} {Remote Linux device in the Devices tab in Devices preferences}

    To automatically connect to the remote Linux device when \QC starts, select
    \uicontrol {Auto-connect on startup}.

    //! [openssh]
    \section1 Protecting device connections

    To protect the connections between \QC and a device, use \l{OpenSSH} for
    remote login over the SSH protocol. The OpenSSH suite is not delivered with
    \QC, so download it and install it on the computer. Then, configure the paths
    to the tools in \QC.

    You need either a password or an SSH public and private key pair for
    authentication. If you do not have an SSH key, use the \c ssh-keygen
    tool to create it in \QC.

    \note \QC does not store passwords, so if you use password authentication,
    you may need to enter the password on every connection to the device,
    or, if caching is enabled, at every \QC restart.

    If you frequently run into the timeout, consider using key-based
    authentication. Create an SSH key in \QC with the \c ssh-keygen tool.

    On \macos and Linux, go to \preferences > \uicontrol Devices > \uicontrol SSH
    and increase the time (in minutes) for sharing an SSH connection in the
    \uicontrol {Connection sharing timeout} field. Windows does not support
    shared connections.

    \image {qtcreator-ssh-options.png} {SSH tab in Devices preferences}
    //! [openssh]

    \sa {Add Docker devices}, {Remote Linux}{How to: Develop for remote Linux},
    {Run in Qt Application Manager}, {Remote Linux Deploy Configuration},
    {Specify remote Linux run settings}
*/

/*!
    \page creator-how-to-connect-remote-linux.html
    \previouspage creator-how-tos.html

    \ingroup creator-how-to-remote-linux

    \title Connect remote Linux devices

    Create connections between generic Linux devices and \QC to run, debug, and
    analyze applications on them.

    To configure connections between \QC and a remote Linux device:

    \list 1

        \li Make sure that your device can be reached via an IP address.

        \li Go to \preferences > \uicontrol Kits > \uicontrol {Qt Versions}.

        \li Select \uicontrol Add to add the Qt version for embedded Linux.

        \li Go to \uicontrol {Preferences} > \uicontrol Kits >
            \uicontrol Compilers.

        \li Select \uicontrol Add to add the compiler for building the
            applications.

        \li Go to \uicontrol {Preferences} > \uicontrol Devices >
            \uicontrol Devices.

        \li Select \uicontrol Add to add a remote Linux device.

        \li Go to \uicontrol {Preferences} > \uicontrol Kits.

        \li Select \uicontrol Add to add a kit for building for the device.

        \li Select the Qt version, compiler, and device that you added above.

        \li In \uicontrol {Run device}, select \uicontrol {Remote Linux Device}
            in \uicontrol {Type}, and then select the actual device to run on in
            \uicontrol {Device}.

        \li To specify build settings:

        \list 1

            \li Open a project for an application you want to develop for the
                device.

            \li Select \uicontrol Projects > \uicontrol {Build & Run} to enable
                the kit that you specified above.

        \endlist

        \li Go to \uicontrol {Run Settings} to specify run settings.
            Usually, you can use the default settings.

        \li When you run the project, \QC deploys the application as specified by
            \uicontrol {Deploy Settings}.

    \endlist

    \sa {Remote Linux}{How to: Develop for remote Linux},
    {Manage kits}{How to: Manage kits}, {Developing for Remote Linux Devices},
    {Remote Linux Deploy Configuration}, {Specify remote Linux run settings}
*/

/*!
    \page creator-how-to-add-remote-linux.html
    \previouspage creator-how-tos.html

    \ingroup creator-how-to-remote-linux

    \title Add remote Linux devices

    Create connections between generic Linux devices and \QC to run, debug, and
    analyze applications on them.

    \image {qtcreator-preferences-devices-remote-linux.webp} {Remote Linux device in the Devices tab in Devices preferences}
    \caption Remote Linux Device preferences

    \include qtcreator-add-linux-device.qdocinc {add linux device} {Remote Linux Device}

    \sa {Remote Linux}{How to: Develop for remote Linux},
    {Debug remotely with GDB}, {Developing for Remote Linux Devices},
    {Remote Linux Deploy Configuration}
*/

/*!
    \page creator-how-to-build-on-remote-linux.html
    \previouspage creator-how-tos.html

    \ingroup creator-how-to-remote-linux

    \title Build applications on remote Linux devices

    In addition to building applications \e {for} a generic Linux device, you can
    use the toolchain on the device to build the applications \e {on} the device.

    \include creator-how-to-build-on-remote-devices.qdocinc {build on remote devices} {remote Linux device}

    \sa {Add CMake tools}, {Remote Linux}{How to: Develop for remote Linux},
    {Manage kits}{How to: Manage kits}, {Developing for Remote Linux Devices},
    {Remote Linux Deploy Configuration}, {Specify remote Linux run settings}
*/
