/****************************************************************************
**
** Copyright (C) 2017 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the Qt Creator documentation.
**
** 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.
**
****************************************************************************/

// **********************************************************************
// 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.
// **********************************************************************

/*!
    \contentspage {Qt Creator Manual}
    \previouspage creator-deploying-android.html
    \page creator-deployment-embedded-linux.html
    \nextpage creator-deployment-qnx.html

    \title Deploying Applications to Embedded Linux Devices

    You can specify settings for deploying applications to generic Linux devices
    in the project .pro file. You can view the settings in the
    \uicontrol {Run Settings}.

    \image qtcreator-embedded-linux-deployment-overview.png "Deploy to device"

    The files to be installed are listed in the \uicontrol {Deployment} step,
    the \uicontrol {Files to deploy} field. The \uicontrol {Local File Path}
    field displays the location of the file on the development PC. The
    \uicontrol {Remote Directory} field displays the folder where the file is
    installed on the device. Text in red color indicates that the information is
    missing. Edit the qmake \l{Variables#installs} {INSTALLS variable} in the
    project \c .pro file to add the missing files.

    When you run the application, \QC copies the necessary files to the device
    and starts the application on it.

    For example, adding

    \code
      target.path = /root
      INSTALLS += target
    \endcode

    to the project .pro file will copy the binary of your project to \c /root
    on the remote device. Additional files can be deployed by adding them to
    further targets and adding those to \c INSTALLS as well.

    \section1 Generic Deployment Steps

    \image qtcreator-embedded-linux-deployment-details.png "Deploy to embedded Linux"

    When you run the application on the device, \QC
    deploys the application as specified by the deploy steps. By default, \QC
    copies the application files to the device by using the SSH file transfer
    protocol (SFTP), as specified by the \uicontrol {Upload files via SFTP}
    step.

    If you have a lot of data to copy, select \uicontrol Details in the
    \uicontrol {Upload Files via SFTP} step, and then select the
    \uicontrol {Incremental deployment} check box. \QC takes note of the
    deployment time and only copies files that have changed since the last
    deployment. However, when you make major changes on the device, such as
    removing files from the device manually or flashing a new disk image, or
    when you use another device with the same IP address, deselect the check box
    once, to have \QC deploy all files again.

    To only create a tarball and not copy the files to the device, select
    \uicontrol {Add Deploy Step} > \uicontrol {Create tarball}. Then remove all
    other deploy steps.

    The \uicontrol {Deploy tarball via SFTP upload} step specifies that \QC
    uploads the tarball to the device and extracts it.

    The \uicontrol {Check for free disk space} step is by default the first
    deploy step. Use it to find out whether the remote file system has enough
    space left to deploy your project. Errors due to lack of disk space can
    otherwise be hard to detect.

    \note If the SFTP upload fails, make sure that the remote device has SFTP
    enabled in its SSH daemon. Some versions of Dropbear that come without SFTP
    support will crash when an SFTP upload is being attempted. This is not a bug
    in \QC.

    \section1 Qt for Device Creation Deployment Steps

    The deployment steps depend on the Qt for Device Creation version specified
    in the kit.

    \section2 Developing with Qt 5.8 or Earlier

    The generic deployment steps are not available when developing with Qt for
    Device Creation version 5.8 or earlier.

    \image qtcreator-deployment-steps-b2qt-58.png

    By default, \QC pushes the files to the device incrementally over an ADB
    connection. When developing on Windows, executable permissions are set for
    executable files after they are deployed to the device.

    To execute custom commands, select \uicontrol {Add Deploy Step} >
    \uicontrol {Custom Remote Command (via adb shell)} and enter the command to
    execute.

    \note You can add custom commands also as \l{Build Steps}{build steps}, to
    have them executed when the application is built.

    To have your application launch on boot, select \uicontrol {Add Deploy Step}
    > \uicontrol {Make this application the default one}.

    \section2 Developing with Qt 5.9 or Later

    When developing with Qt for Device Creation version 5.9 or later, you can
    specify the deployment steps described in this section in addition to the
    generic deployment steps.

    To execute custom commands when the application is deployed to the device,
    select \uicontrol {Add Deploy Step} > \uicontrol {Run Custom Remote Command}
    and enter the command to execute.

    To have your application launch on boot, select \uicontrol {Add Deploy Step}
    > \uicontrol {Change Default Application}.

    \include creator-projects-cmake-deploying.qdocinc cmake deploying embedded

*/
