Skip to content
qgroundcontrol.pro 53.5 KiB
Newer Older
################################################################################
#
# (c) 2009-2020 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
#
# QGroundControl is licensed according to the terms in the file
# COPYING.md in the root of the source code directory.
#
################################################################################

QMAKE_PROJECT_DEPTH = 0 # undocumented qmake flag to force absolute paths in makefiles
# These are disabled until proven correct
DEFINES += QGC_GST_TAISYNC_DISABLED
DEFINES += QGC_GST_MICROHARD_DISABLED
dogmaphobic's avatar
dogmaphobic committed
exists($${OUT_PWD}/qgroundcontrol.pro) {
    error("You must use shadow build (e.g. mkdir build; cd build; qmake ../qgroundcontrol.pro).")
dogmaphobic's avatar
dogmaphobic committed
}

message(Qt version $$[QT_VERSION])

!equals(QT_MAJOR_VERSION, 5) | !greaterThan(QT_MINOR_VERSION, 10) {
    error("Unsupported Qt version, 5.11+ is required")
include(QGCCommon.pri)

Daniel Agar's avatar
Daniel Agar committed
TARGET   = QGroundControl
QGCROOT  = $$PWD

DebugBuild {
    DESTDIR  = $${OUT_PWD}/debug
    #DEFINES += SNAKE_SHOW_TIME
    #DEFINES += SNAKE_DEBUG
    DEFINES += SNAKE_SHOW_TIME
    DEFINES += DEBUG_CIRCULAR_SURVEY
    DEFINES += ROS_BRIDGE_DEBUG
    DESTDIR  = $${OUT_PWD}/release
    #DEFINES += ROS_BRIDGE_DEBUG
    DEFINES += SNAKE_SHOW_TIME
    #DEFINES += SNAKE_DEBUG
    DEFINES += NDEBUG
QML_IMPORT_PATH += $$PWD/src/QmlControls

#
# OS Specific settings
#

MacBuild {
    QMAKE_INFO_PLIST    = Custom-Info.plist
    ICON                = $${SOURCE_DIR}/resources/icons/macx.icns
    LIBS               += -framework ApplicationServices
}

LinuxBuild {
    CONFIG  += qesp_linux_udev
}

WindowsBuild {
    RC_ICONS = resources/icons/qgroundcontrol.ico
    CONFIG += resources_big
QGC_APP_NAME        = "QGroundControl"
QGC_ORG_NAME        = "QGroundControl.org"
QGC_ORG_DOMAIN      = "org.qgroundcontrol"
QGC_APP_DESCRIPTION = "Open source ground control app provided by QGroundControl dev team"
QGC_APP_COPYRIGHT   = "Copyright (C) 2019 QGroundControl Development Team. All rights reserved."
    QGC_INSTALLER_ICON          = "$$SOURCE_DIR\\WindowsQGC.ico"
    QGC_INSTALLER_HEADER_BITMAP = "$$SOURCE_DIR\\installheader.bmp"
# Load additional config flags from user_config.pri
exists(user_config.pri):infile(user_config.pri, CONFIG) {
    CONFIG += $$fromfile(user_config.pri, CONFIG)
    message($$sprintf("Using user-supplied additional config: '%1' specified in user_config.pri", $$fromfile(user_config.pri, CONFIG)))
}

#
# Custom Build
#
# QGC will create a "CUSTOMCLASS" object (exposed by your custom build
# and derived from QGCCorePlugin).
# This is the start of allowing custom Plugins, which will eventually use a
# more defined runtime plugin architecture and not require a QGC project
# file you would have to keep in sync with the upstream repo.
#

# This allows you to ignore the custom build even if the custom build
# is present. It's useful to run "regular" builds to make sure you didn't
# break anything.

contains (CONFIG, QGC_DISABLE_CUSTOM_BUILD) {
    message("Disable custom build override")
} else {
    exists($$PWD/custom/custom.pri) {
        message("Found custom build")
        CONFIG  += CustomBuild
        DEFINES += QGC_CUSTOM_BUILD
        # custom.pri must define:
        # CUSTOMCLASS  = YourIQGCCorePluginDerivation
        # CUSTOMHEADER = \"\\\"YourIQGCCorePluginDerivation.h\\\"\"
        include($$PWD/custom/custom.pri)
    }
}

WindowsBuild {
    # Sets up application properties
    QMAKE_TARGET_COMPANY        = "$${QGC_ORG_NAME}"
    QMAKE_TARGET_DESCRIPTION    = "$${QGC_APP_DESCRIPTION}"
    QMAKE_TARGET_COPYRIGHT      = "$${QGC_APP_COPYRIGHT}"
    QMAKE_TARGET_PRODUCT        = "$${QGC_APP_NAME}"
}

#-------------------------------------------------------------------------------------
# iOS

iOSBuild {
    contains (CONFIG, DISABLE_BUILTIN_IOS) {
        message("Skipping builtin support for iOS")
    } else {
        LIBS                 += -framework AVFoundation
        #-- Info.plist (need an "official" one for the App Store)
        ForAppStore {
            message(App Store Build)
            #-- Create official, versioned Info.plist
            APP_STORE = $$system(cd $${SOURCE_DIR} && $${SOURCE_DIR}/tools/update_ios_version.sh $${SOURCE_DIR}/ios/iOSForAppStore-Info-Source.plist $${SOURCE_DIR}/ios/iOSForAppStore-Info.plist)
            APP_ERROR = $$find(APP_STORE, "Error")
            count(APP_ERROR, 1) {
                error("Error building .plist file. 'ForAppStore' builds are only possible through the official build system.")
            }
            QT               += qml-private
            QMAKE_INFO_PLIST  = $${SOURCE_DIR}/ios/iOSForAppStore-Info.plist
            OTHER_FILES      += $${SOURCE_DIR}/ios/iOSForAppStore-Info.plist
            QMAKE_INFO_PLIST  = $${SOURCE_DIR}/ios/iOS-Info.plist
            OTHER_FILES      += $${SOURCE_DIR}/ios/iOS-Info.plist
        }
        QMAKE_ASSET_CATALOGS += ios/Images.xcassets
        BUNDLE.files          = ios/QGCLaunchScreen.xib $$QMAKE_INFO_PLIST
        QMAKE_BUNDLE_DATA    += BUNDLE
    }
}

Gus Grubba's avatar
Gus Grubba committed
#
# Plugin configuration
#
# This allows you to build custom versions of QGC which only includes your
# specific vehicle plugin. To remove support for a firmware type completely,
# disable both the Plugin and PluginFactory entries. To include custom support
# for an existing plugin type disable PluginFactory only. Then provide you own
# implementation of FirmwarePluginFactory and use the FirmwarePlugin and
# AutoPilotPlugin classes as the base clase for your derived plugin
# implementation.

contains (CONFIG, QGC_DISABLE_APM_PLUGIN) {
    message("Disable APM Plugin")
} else {
    CONFIG += APMFirmwarePlugin
}

contains (CONFIG, QGC_DISABLE_APM_PLUGIN_FACTORY) {
    message("Disable APM Plugin Factory")
} else {
    CONFIG += APMFirmwarePluginFactory
}

contains (CONFIG, QGC_DISABLE_PX4_PLUGIN) {
    message("Disable PX4 Plugin")
} else {
    CONFIG += PX4FirmwarePlugin
}

contains (CONFIG, QGC_DISABLE_PX4_PLUGIN_FACTORY) {
    message("Disable PX4 Plugin Factory")
} else {
    CONFIG += PX4FirmwarePluginFactory
}

dogmaphobic's avatar
dogmaphobic committed
# Bluetooth
contains (DEFINES, QGC_DISABLE_BLUETOOTH) {
    message("Skipping support for Bluetooth (manual override from command line)")
    DEFINES -= QGC_ENABLE_BLUETOOTH
} else:exists(user_config.pri):infile(user_config.pri, DEFINES, QGC_DISABLE_BLUETOOTH) {
    message("Skipping support for Bluetooth (manual override from user_config.pri)")
    DEFINES -= QGC_ENABLE_BLUETOOTH
} else:exists(user_config.pri):infile(user_config.pri, DEFINES, QGC_ENABLE_BLUETOOTH) {
    message("Including support for Bluetooth (manual override from user_config.pri)")
    DEFINES += QGC_ENABLE_BLUETOOTH
}

# QTNFC
contains (DEFINES, QGC_DISABLE_QTNFC) {
    message("Skipping support for QTNFC (manual override from command line)")
    DEFINES -= QGC_ENABLE_QTNFC
} else:exists(user_config.pri):infile(user_config.pri, DEFINES, QGC_DISABLE_QTNFC) {
    message("Skipping support for QTNFC (manual override from user_config.pri)")
    DEFINES -= QGC_ENABLE_QTNFC
} else:exists(user_config.pri):infile(user_config.pri, DEFINES, QGC_ENABLE_QTNFC) {
    message("Including support for QTNFC (manual override from user_config.pri)")
    DEFINES += QGC_ENABLE_QTNFC
}

# USB Camera and UVC Video Sources
contains (DEFINES, QGC_DISABLE_UVC) {
    message("Skipping support for UVC devices (manual override from command line)")
    DEFINES += QGC_DISABLE_UVC
} else:exists(user_config.pri):infile(user_config.pri, DEFINES, QGC_DISABLE_UVC) {
    message("Skipping support for UVC devices (manual override from user_config.pri)")
    DEFINES += QGC_DISABLE_UVC
dogmaphobic's avatar
dogmaphobic committed
} else:LinuxBuild {
    contains(QT_VERSION, 5.5.1) {
        message("Skipping support for UVC devices (conflict with Qt 5.5.1 on Ubuntu)")
        DEFINES += QGC_DISABLE_UVC
    }
LinuxBuild {
    CONFIG += link_pkgconfig
}

# Qt configuration

CONFIG += qt \
Valentin Platzgummer's avatar
Valentin Platzgummer committed
    c++14

DebugBuild {
    CONFIG -= qtquickcompiler
} else {
    CONFIG += qtquickcompiler
}

contains(DEFINES, ENABLE_VERBOSE_OUTPUT) {
    message("Enable verbose compiler output (manual override from command line)")
} else:exists(user_config.pri):infile(user_config.pri, DEFINES, ENABLE_VERBOSE_OUTPUT) {
    message("Enable verbose compiler output (manual override from user_config.pri)")
} else {
    CONFIG += silent

QT += \
    concurrent \
    gui \
    location \
    network \
    opengl \
    positioning \
    qml \
    quick \
    quickcontrols2 \
    quickwidgets \
    sql \
    svg \
    widgets \
    texttospeech \
    core-private

# Multimedia only used if QVC is enabled
!contains (DEFINES, QGC_DISABLE_UVC) {
    QT += \
        multimedia
}
AndroidBuild || iOSBuild {
    # Android and iOS don't unclude these
} else {
    QT += \
        printsupport \
        serialport \
dogmaphobic's avatar
dogmaphobic committed
contains(DEFINES, QGC_ENABLE_BLUETOOTH) {
dogmaphobic's avatar
dogmaphobic committed
QT += \
    bluetooth \
}

contains(DEFINES, QGC_ENABLE_QTNFC) {
QT += \
    nfc \
}

#  testlib is needed even in release flavor for QSignalSpy support
QT += testlib
ReleaseBuild {
    # We don't need the testlib console in release mode
    QT.testlib.CONFIG -= console
}
#
# Build-specific settings
#

DebugBuild {
!iOSBuild {
    CONFIG += console
}
}

#
# Our QtLocation "plugin"
#

include(src/QtLocationPlugin/QGCLocationPlugin.pri)

# Until pairing can be made to work cleanly on all OS it is turned off
DEFINES+=QGC_DISABLE_PAIRING

# Pairing
contains (DEFINES, QGC_DISABLE_PAIRING) {
    message("Skipping support for Pairing")
} else:exists(user_config.pri):infile(user_config.pri, DEFINES, QGC_DISABLE_PAIRING) {
    message("Skipping support for Pairing (manual override from user_config.pri)")
} else:AndroidBuild:contains(QT_ARCH, arm64) {
    # Haven't figured out how to get 64 bit arm OpenSLL yet which pairing requires
    message("Skipping support for Pairing (Missing Android OpenSSL 64 bit support)")
} else {
    message("Enabling support for Pairing")
    DEFINES += QGC_ENABLE_PAIRING
}

#
# External library configuration
#

include(QGCExternalLibs.pri)

#
# Resources (custom code can replace them)
CustomBuild {
    exists($$PWD/custom/qgroundcontrol.qrc) {
        message("Using custom qgroundcontrol.qrc")
        RESOURCES += $$PWD/custom/qgroundcontrol.qrc
    } else {
        RESOURCES += $$PWD/qgroundcontrol.qrc
    }
    exists($$PWD/custom/qgcresources.qrc) {
        message("Using custom qgcresources.qrc")
        RESOURCES += $$PWD/custom/qgcresources.qrc
    } else {
        RESOURCES += $$PWD/qgcresources.qrc
    }
    exists($$PWD/custom/qgcimages.qrc) {
        message("Using custom qgcimages.qrc")
        RESOURCES += $$PWD/custom/qgcimages.qrc
    } else {
        RESOURCES += $$PWD/qgcimages.qrc
    }
    exists($$PWD/custom/InstrumentValueIcons.qrc) {
        message("Using custom InstrumentValueIcons.qrc")
        RESOURCES += $$PWD/custom/InstrumentValueIcons.qrc
    } else {
        RESOURCES += $$PWD/resources/InstrumentValueIcons/InstrumentValueIcons.qrc
    }
    DEFINES += QGC_APPLICATION_NAME=\"\\\"QGCWima\\\"\"
    DEFINES += QGC_ORG_NAME=\"\\\"QGCWima.org\\\"\"
    DEFINES += QGC_ORG_DOMAIN=\"\\\"org.qgcwima\\\"\"
    RESOURCES += \
        $$PWD/qgroundcontrol.qrc \
        $$PWD/qgcresources.qrc \
        $$PWD/qgcimages.qrc \
        $$PWD/resources/InstrumentValueIcons/InstrumentValueIcons.qrc \
#
# Main QGroundControl portion of project file
#
DebugBuild {
    # Unit Test resources
    RESOURCES += UnitTest.qrc
}

DEPENDPATH += \
    . \
    plugins

INCLUDEPATH += .

INCLUDEPATH += \
    include/ui \
    src \
Don Gagne's avatar
Don Gagne committed
    src/AnalyzeView \
    src/Camera \
    src/AutoPilotPlugins \
    src/FlightDisplay \
    src/FlightMap \
    src/FlightMap/Widgets \
Jimmy Johnson's avatar
Jimmy Johnson committed
    src/FollowMe \
Gus Grubba's avatar
Gus Grubba committed
    src/Joystick \
    src/MissionManager \
Gus Grubba's avatar
Gus Grubba committed
    src/PositionManager \
    src/QmlControls \
Gus Grubba's avatar
Gus Grubba committed
    src/QtLocationPlugin \
    src/QtLocationPlugin/QMLControl \
Don Gagne's avatar
Don Gagne committed
    src/Settings \
    src/Vehicle \
    src/Audio \
Gus Grubba's avatar
Gus Grubba committed
    src/comm \
Gus Grubba's avatar
Gus Grubba committed
    src/input \
    src/lib/qmapcontrol \
    src/uas \
    src/ui \
    src/ui/linechart \
    src/ui/map \
    src/ui/mapdisplay \
    src/ui/mission \
    src/ui/px4_configuration \
    src/ui/toolbar \
    src/ui/uas \

contains (DEFINES, QGC_ENABLE_PAIRING) {
    INCLUDEPATH += \
        src/PairingManager \
Gus Grubba's avatar
Gus Grubba committed
#
# Plugin API
#

HEADERS += \
    src/QmlControls/QmlUnitsConversion.h \
    src/Vehicle/VehicleEscStatusFactGroup.h \
    src/Wima/CircularSurvey.h \
    src/Wima/Geometry/GenericCircle.h \
    src/Wima/RoutingThread.h \
Valentin Platzgummer's avatar
Valentin Platzgummer committed
    src/Wima/Snake/CircularGenerator.h \
    src/Wima/Snake/GeneratorBase.h \
    src/Wima/Snake/LinearGenerator.h \
    src/Wima/Snake/clipper/clipper.hpp \
    src/Wima/Snake/mapbox/feature.hpp \
    src/Wima/Snake/mapbox/geometry.hpp \
    src/Wima/Snake/mapbox/geometry/box.hpp \
    src/Wima/Snake/mapbox/geometry/empty.hpp \
    src/Wima/Snake/mapbox/geometry/envelope.hpp \
    src/Wima/Snake/mapbox/geometry/for_each_point.hpp \
    src/Wima/Snake/mapbox/geometry/geometry.hpp \
    src/Wima/Snake/mapbox/geometry/line_string.hpp \
    src/Wima/Snake/mapbox/geometry/multi_line_string.hpp \
    src/Wima/Snake/mapbox/geometry/multi_point.hpp \
    src/Wima/Snake/mapbox/geometry/multi_polygon.hpp \
    src/Wima/Snake/mapbox/geometry/point.hpp \
    src/Wima/Snake/mapbox/geometry/point_arithmetic.hpp \
    src/Wima/Snake/mapbox/geometry/polygon.hpp \
    src/Wima/Snake/mapbox/geometry_io.hpp \
    src/Wima/Snake/mapbox/optional.hpp \
    src/Wima/Snake/mapbox/polylabel.hpp \
    src/Wima/Snake/mapbox/recursive_wrapper.hpp \
    src/Wima/Snake/mapbox/variant.hpp \
    src/Wima/Snake/mapbox/variant_io.hpp \
    src/Wima/Snake/snake.h \
    src/Wima/Geometry/GenericPolygon.h \
    src/Wima/Geometry/GenericPolygonArray.h \
    src/Wima/Geometry/GeoPoint3D.h \
Valentin Platzgummer's avatar
Valentin Platzgummer committed
    src/Wima/Snake/NemoInterface.h \
    src/Wima/Snake/QNemoHeartbeat.h \
    src/Wima/Snake/QNemoProgress.h \
    src/Wima/Snake/QNemoProgress.h \
    src/Wima/Snake/SnakeTile.h \
    src/Wima/Snake/SnakeTileLocal.h \
    src/Wima/Snake/SnakeTiles.h \
    src/Wima/Snake/SnakeTilesLocal.h \
    src/Wima/Utils.h \
    src/Wima/WimaStateMachine.h \
    src/api/QGCCorePlugin.h \
    src/api/QGCOptions.h \
Gus Grubba's avatar
Gus Grubba committed
    src/api/QGCSettings.h \
    src/api/QmlComponentInfo.h \
    src/GPS/Drivers/src/base_station.h \
    src/Wima/Geometry/WimaArea.h \
    src/Wima/Geometry/WimaServiceArea.h \
    src/Wima/Geometry/WimaTrackerPolyline.h \
    src/Wima/WimaController.h \
    src/Wima/Geometry/WimaMeasurementArea.h \
    src/Wima/Geometry/WimaCorridor.h \
    src/Wima/Geometry/WimaAreaData.h \
    src/Wima/Geometry/WimaServiceAreaData.h \
    src/Wima/Geometry/WimaCorridorData.h \
    src/Wima/Geometry/WimaMeasurementAreaData.h \
    src/Wima/WimaPlanData.h \
    src/Wima/Geometry/WimaJoinedArea.h \
    src/Wima/Geometry/WimaJoinedAreaData.h \
    src/Wima/Geometry/PlanimetryCalculus.h \
    src/Wima/Geometry/PolygonCalculus.h \
    src/Wima/OptimisationTools.h \
    src/Wima/Geometry/GeoUtilities.h \
    src/Wima/Geometry/TestPolygonCalculus.h \
    src/Wima/Geometry/testplanimetrycalculus.h \
Valentin Platzgummer's avatar
Valentin Platzgummer committed
    src/comm/ros_bridge/include/RosBridgeClient.h \
    src/comm/ros_bridge/include/com_private.h \
    src/comm/ros_bridge/include/message_traits.h \
    src/comm/ros_bridge/include/messages/geographic_msgs/geopoint.h \
    src/comm/ros_bridge/include/messages/geometry_msgs/point32.h \
    src/comm/ros_bridge/include/messages/geometry_msgs/polygon.h \
    src/comm/ros_bridge/include/messages/geometry_msgs/polygon_stamped.h \
    src/comm/ros_bridge/include/messages/jsk_recognition_msgs/polygon_array.h \
    src/comm/ros_bridge/include/messages/nemo_msgs/heartbeat.h \
    src/comm/ros_bridge/include/messages/nemo_msgs/progress.h \
    src/comm/ros_bridge/include/messages/std_msgs/header.h \
    src/comm/ros_bridge/include/server.h \
    src/comm/ros_bridge/include/messages/std_msgs/time.h \
    src/comm/ros_bridge/include/topic_publisher.h \
    src/comm/ros_bridge/include/topic_subscriber.h \
Valentin Platzgummer's avatar
Valentin Platzgummer committed
    src/comm/utilities.h

contains (DEFINES, QGC_ENABLE_PAIRING) {
    HEADERS += \
        src/PairingManager/aes.h
}

    src/Vehicle/VehicleEscStatusFactGroup.cc \
    src/Wima/WimaStateMachine.cpp \
    src/api/QGCCorePlugin.cc \
    src/api/QGCOptions.cc \
    src/api/QGCSettings.cc \
    src/api/QmlComponentInfo.cc \
    src/Wima/CircularSurvey.cc \
    src/Wima/RoutingThread.cpp \
Valentin Platzgummer's avatar
Valentin Platzgummer committed
    src/Wima/Snake/CircularGenerator.cpp \
    src/Wima/Snake/GeneratorBase.cc \
    src/Wima/Snake/LinearGenerator.cpp \
    src/Wima/Snake/clipper/clipper.cpp \
    src/Wima/Snake/snake.cpp \
    src/Wima/Geometry/GeoPoint3D.cpp \
Valentin Platzgummer's avatar
Valentin Platzgummer committed
    src/Wima/Snake/NemoInterface.cpp \
    src/Wima/Snake/QNemoProgress.cc \
    src/Wima/Snake/SnakeTile.cpp \
    src/Wima/Utils.cpp \
    src/comm/ros_bridge/include/RosBridgeClient.cpp \
    src/comm/ros_bridge/include/com_private.cpp \
    src/comm/ros_bridge/include/messages/geographic_msgs/geopoint.cpp \
    src/comm/ros_bridge/include/messages/geometry_msgs/point32.cpp \
    src/comm/ros_bridge/include/messages/geometry_msgs/polygon.cpp \
    src/comm/ros_bridge/include/messages/geometry_msgs/polygon_stamped.cpp \
    src/comm/ros_bridge/include/messages/jsk_recognition_msgs/polygon_array.cpp \
    src/comm/ros_bridge/include/messages/nemo_msgs/heartbeat.cpp \
    src/comm/ros_bridge/include/messages/nemo_msgs/progress.cpp \
Valentin Platzgummer's avatar
Valentin Platzgummer committed
    src/comm/ros_bridge/include/messages/std_msgs/header.cpp \
    src/comm/ros_bridge/include/messages/std_msgs/time.cpp \
    src/comm/ros_bridge/include/server.cpp \
    src/comm/ros_bridge/include/topic_publisher.cpp \
    src/comm/ros_bridge/include/topic_subscriber.cpp \
    src/Wima/Geometry/WimaArea.cc \
    src/Wima/Geometry/WimaServiceArea.cc \
    src/Wima/Geometry/WimaTrackerPolyline.cc \
    src/Wima/WimaController.cc \
    src/Wima/WimaPlaner.cc \
    src/Wima/Geometry/WimaMeasurementArea.cc \
    src/Wima/Geometry/WimaCorridor.cc \
    src/Wima/Geometry/WimaAreaData.cc \
    src/Wima/Geometry/WimaServiceAreaData.cc \
    src/Wima/Geometry/WimaCorridorData.cpp \
    src/Wima/Geometry/WimaMeasurementAreaData.cc \
    src/Wima/Geometry/WimaJoinedArea.cc \
    src/Wima/Geometry/WimaJoinedAreaData.cc \
    src/Wima/Geometry/PlanimetryCalculus.cc \
    src/Wima/OptimisationTools.cc \
    src/Wima/Geometry/GeoUtilities.cc \
    src/Wima/Geometry/PolygonCalculus.cc \
    src/Wima/Geometry/TestPolygonCalculus.cpp \
    src/Wima/Geometry/testplanimetrycalculus.cpp \
    src/comm/ros_bridge/src/ros_bridge.cpp
contains (DEFINES, QGC_ENABLE_PAIRING) {
    SOURCES += \
        src/PairingManager/aes.cpp
}

#
# Unit Test specific configuration goes here (requires full debug build with all plugins)
#

DebugBuild { PX4FirmwarePlugin { PX4FirmwarePluginFactory { APMFirmwarePlugin { APMFirmwarePluginFactory { !MobileBuild {
    DEFINES += UNITTEST_BUILD

    INCLUDEPATH += \
        src/qgcunittest

    HEADERS += \
        src/Audio/AudioOutputTest.h \
        src/FactSystem/FactSystemTestBase.h \
        src/FactSystem/FactSystemTestGeneric.h \
        src/FactSystem/FactSystemTestPX4.h \
        src/FactSystem/ParameterManagerTest.h \
        src/MissionManager/CameraCalcTest.h \
        src/MissionManager/CameraSectionTest.h \
        src/MissionManager/CorridorScanComplexItemTest.h \
Don Gagne's avatar
 
Don Gagne committed
        src/MissionManager/FWLandingPatternTest.h \
        src/MissionManager/LandingComplexItemTest.h \
        src/MissionManager/MissionCommandTreeEditorTest.h \
        src/MissionManager/MissionCommandTreeTest.h \
        src/MissionManager/MissionControllerManagerTest.h \
Gus Grubba's avatar
Gus Grubba committed
        src/MissionManager/MissionControllerTest.h \
        src/MissionManager/MissionItemTest.h \
        src/MissionManager/MissionManagerTest.h \
        src/MissionManager/MissionSettingsTest.h \
        src/MissionManager/PlanMasterControllerTest.h \
        src/MissionManager/QGCMapPolygonTest.h \
        src/MissionManager/QGCMapPolylineTest.h \
        src/MissionManager/SectionTest.h \
        src/MissionManager/SimpleMissionItemTest.h \
        src/MissionManager/SpeedSectionTest.h \
        src/MissionManager/StructureScanComplexItemTest.h \
        src/MissionManager/SurveyComplexItemTest.h \
        src/MissionManager/TransectStyleComplexItemTest.h \
        src/MissionManager/TransectStyleComplexItemTestBase.h \
        src/MissionManager/VisualMissionItemTest.h \
Gus Grubba's avatar
Gus Grubba committed
        src/qgcunittest/GeoTest.h \
        src/qgcunittest/MavlinkLogTest.h \
        src/qgcunittest/MultiSignalSpy.h \
        src/qgcunittest/MultiSignalSpyV2.h \
        src/qgcunittest/UnitTest.h \
        src/Vehicle/FTPManagerTest.h \
        src/Vehicle/RequestMessageTest.h \
        src/Vehicle/SendMavCommandWithHandlerTest.h \
        src/Vehicle/SendMavCommandWithSignallingTest.h \
        src/Vehicle/VehicleLinkManagerTest.h \
        #src/qgcunittest/RadioConfigTest.h \
        #src/AnalyzeView/LogDownloadTest.h \
        #src/qgcunittest/FileDialogTest.h \
        #src/qgcunittest/FileManagerTest.h \
        #src/qgcunittest/MainWindowTest.h \
        #src/qgcunittest/MessageBoxTest.h \
        src/Audio/AudioOutputTest.cc \
        src/FactSystem/FactSystemTestBase.cc \
        src/FactSystem/FactSystemTestGeneric.cc \
        src/FactSystem/FactSystemTestPX4.cc \
        src/FactSystem/ParameterManagerTest.cc \
        src/MissionManager/CameraCalcTest.cc \
        src/MissionManager/CameraSectionTest.cc \
        src/MissionManager/CorridorScanComplexItemTest.cc \
Don Gagne's avatar
 
Don Gagne committed
        src/MissionManager/FWLandingPatternTest.cc \
        src/MissionManager/LandingComplexItemTest.cc \
        src/MissionManager/MissionCommandTreeEditorTest.cc \
        src/MissionManager/MissionCommandTreeTest.cc \
        src/MissionManager/MissionControllerManagerTest.cc \
Gus Grubba's avatar
Gus Grubba committed
        src/MissionManager/MissionControllerTest.cc \
        src/MissionManager/MissionItemTest.cc \
        src/MissionManager/MissionManagerTest.cc \
        src/MissionManager/MissionSettingsTest.cc \
        src/MissionManager/PlanMasterControllerTest.cc \
        src/MissionManager/QGCMapPolygonTest.cc \
        src/MissionManager/QGCMapPolylineTest.cc \
        src/MissionManager/SectionTest.cc \
        src/MissionManager/SimpleMissionItemTest.cc \
        src/MissionManager/SpeedSectionTest.cc \
        src/MissionManager/StructureScanComplexItemTest.cc \
        src/MissionManager/SurveyComplexItemTest.cc \
        src/MissionManager/TransectStyleComplexItemTest.cc \
        src/MissionManager/TransectStyleComplexItemTestBase.cc \
        src/MissionManager/VisualMissionItemTest.cc \
Gus Grubba's avatar
Gus Grubba committed
        src/qgcunittest/GeoTest.cc \
        src/qgcunittest/MavlinkLogTest.cc \
        src/qgcunittest/MultiSignalSpy.cc \
        src/qgcunittest/MultiSignalSpyV2.cc \
        src/qgcunittest/UnitTest.cc \
        src/qgcunittest/UnitTestList.cc \
        src/Vehicle/FTPManagerTest.cc \
        src/Vehicle/RequestMessageTest.cc \
        src/Vehicle/SendMavCommandWithHandlerTest.cc \
        src/Vehicle/SendMavCommandWithSignallingTest.cc \
        src/Vehicle/VehicleLinkManagerTest.cc \
        #src/qgcunittest/RadioConfigTest.cc \
        #src/AnalyzeView/LogDownloadTest.cc \
        #src/qgcunittest/FileDialogTest.cc \
        #src/qgcunittest/FileManagerTest.cc \
        #src/qgcunittest/MainWindowTest.cc \
        #src/qgcunittest/MessageBoxTest.cc \

} } } } } }

# Main QGC Headers and Source files

    src/ADSB/ADSBVehicle.h \
    src/ADSB/ADSBVehicleManager.h \
    src/AnalyzeView/LogDownloadController.h \
    src/AnalyzeView/PX4LogParser.h \
    src/AnalyzeView/ULogParser.h \
    src/AnalyzeView/MavlinkConsoleController.h \
    src/Audio/AudioOutput.h \
    src/Camera/QGCCameraControl.h \
    src/Camera/QGCCameraIO.h \
    src/Camera/QGCCameraManager.h \
    src/CmdLineOptParser.h \
    src/FirmwarePlugin/PX4/px4_custom_mode.h \
Gus Grubba's avatar
Gus Grubba committed
    src/FollowMe/FollowMe.h \
    src/Joystick/Joystick.h \
    src/Joystick/JoystickManager.h \
Don Gagne's avatar
Don Gagne committed
    src/JsonHelper.h \
    src/KMLDomDocument.h \
    src/KMLHelper.h \
    src/LogCompressor.h \
    src/MissionManager/CameraCalc.h \
    src/MissionManager/CameraSection.h \
    src/MissionManager/CameraSpec.h \
    src/MissionManager/ComplexMissionItem.h \
    src/MissionManager/CorridorScanComplexItem.h \
    src/MissionManager/CorridorScanPlanCreator.h \
    src/MissionManager/BlankPlanCreator.h \
    src/MissionManager/FixedWingLandingComplexItem.h \
    src/MissionManager/GeoFenceController.h \
    src/MissionManager/GeoFenceManager.h \
    src/MissionManager/KMLPlanDomDocument.h \
    src/MissionManager/LandingComplexItem.h \
    src/MissionManager/MissionCommandList.h \
    src/MissionManager/MissionCommandTree.h \
    src/MissionManager/MissionCommandUIInfo.h \
    src/MissionManager/MissionController.h \
    src/MissionManager/MissionItem.h \
    src/MissionManager/MissionManager.h \
    src/MissionManager/MissionSettingsItem.h \
    src/MissionManager/PlanElementController.h \
    src/MissionManager/PlanCreator.h \
    src/MissionManager/PlanManager.h \
    src/MissionManager/PlanMasterController.h \
    src/MissionManager/QGCFenceCircle.h \
    src/MissionManager/QGCFencePolygon.h \
    src/MissionManager/QGCMapCircle.h \
    src/MissionManager/QGCMapPolygon.h \
    src/MissionManager/QGCMapPolyline.h \
    src/MissionManager/RallyPoint.h \
    src/MissionManager/RallyPointController.h \
    src/MissionManager/RallyPointManager.h \
    src/MissionManager/SimpleMissionItem.h \
    src/MissionManager/Section.h \
    src/MissionManager/SpeedSection.h \
    src/MissionManager/StructureScanComplexItem.h \
    src/MissionManager/StructureScanPlanCreator.h \
    src/MissionManager/SurveyComplexItem.h \
    src/MissionManager/SurveyPlanCreator.h \
    src/MissionManager/TakeoffMissionItem.h \
    src/MissionManager/TransectStyleComplexItem.h \
    src/MissionManager/VisualMissionItem.h \
    src/MissionManager/VTOLLandingComplexItem.h \
Gus Grubba's avatar
Gus Grubba committed
    src/PositionManager/PositionManager.h \
    src/PositionManager/SimulatedPosition.h \
    src/Geo/QGCGeo.h \
    src/Geo/Constants.hpp \
    src/Geo/Math.hpp \
    src/Geo/Utility.hpp \
    src/Geo/UTMUPS.hpp \
    src/Geo/MGRS.hpp \
    src/Geo/TransverseMercator.hpp \
    src/Geo/PolarStereographic.hpp \
    src/QGC.h \
    src/QGCApplication.h \
    src/QGCComboBox.h \
    src/QGCConfig.h \
    src/QGCFileDownload.h \
    src/QGCLoggingCategory.h \
Don Gagne's avatar
Don Gagne committed
    src/QGCMapPalette.h \
    src/QGCPalette.h \
    src/QGCQGeoCoordinate.h \
    src/QGCTemporaryFile.h \
    src/QGCToolbox.h \
    src/QGCZlib.h \
    src/QmlControls/EditPositionDialogController.h \
    src/QmlControls/FlightPathSegment.h \
    src/QmlControls/HorizontalFactValueGrid.h \
    src/QmlControls/InstrumentValueData.h \
    src/QmlControls/FactValueGrid.h \
    src/QmlControls/ParameterEditorController.h \
    src/QmlControls/QGCFileDialogController.h \
Gus Grubba's avatar
Gus Grubba committed
    src/QmlControls/QGCImageProvider.h \
    src/QmlControls/QGroundControlQmlGlobal.h \
    src/QmlControls/QmlObjectListModel.h \
    src/QmlControls/QGCGeoBoundingCube.h \
Gus Grubba's avatar
Gus Grubba committed
    src/QmlControls/RCChannelMonitorController.h \
    src/QmlControls/RCToParamDialogController.h \
Gus Grubba's avatar
Gus Grubba committed
    src/QmlControls/ScreenToolsController.h \
    src/QmlControls/TerrainProfile.h \
    src/QmlControls/ToolStripAction.h \
    src/QmlControls/ToolStripActionList.h \
Gus Grubba's avatar
Gus Grubba committed
    src/QtLocationPlugin/QMLControl/QGCMapEngineManager.h \
    src/Settings/ADSBVehicleManagerSettings.h \
Don Gagne's avatar
Don Gagne committed
    src/Settings/AppSettings.h \
    src/Settings/AutoConnectSettings.h \
    src/Settings/BrandImageSettings.h \
    src/Settings/FirmwareUpgradeSettings.h \
    src/Settings/FlightMapSettings.h \
Don Gagne's avatar
 
Don Gagne committed
    src/Settings/FlyViewSettings.h \
    src/Settings/OfflineMapsSettings.h \
Don Gagne's avatar
 
Don Gagne committed
    src/Settings/PlanViewSettings.h \
Don Gagne's avatar
Don Gagne committed
    src/Settings/RTKSettings.h \
Don Gagne's avatar
Don Gagne committed
    src/Settings/SettingsGroup.h \
    src/Settings/SettingsManager.h \
    src/Settings/UnitsSettings.h \
    src/Settings/VideoSettings.h \
    src/ShapeFileHelper.h \
    src/SHPFileHelper.h \
    src/Terrain/TerrainQuery.h \
Andreas Bircher's avatar
Andreas Bircher committed
    src/TerrainTile.h \
    src/Vehicle/CompInfo.h \
    src/Vehicle/CompInfoParam.h \
    src/Vehicle/CompInfoVersion.h \
    src/Vehicle/ComponentInformationManager.h \
    src/Vehicle/FTPManager.h \
    src/Vehicle/GPSRTKFactGroup.h \
    src/Vehicle/InitialConnectStateMachine.h \
Gus Grubba's avatar
Gus Grubba committed
    src/Vehicle/MAVLinkLogManager.h \
    src/Vehicle/MultiVehicleManager.h \
    src/Vehicle/StateMachine.h \
    src/Vehicle/SysStatusSensorInfo.h \
    src/Vehicle/TerrainFactGroup.h \
    src/Vehicle/TerrainProtocolHandler.h \
    src/Vehicle/TrajectoryPoints.h \
    src/Vehicle/Vehicle.h \
    src/Vehicle/VehicleObjectAvoidance.h \
    src/Vehicle/VehicleBatteryFactGroup.h \
    src/Vehicle/VehicleClockFactGroup.h \
    src/Vehicle/VehicleDistanceSensorFactGroup.h \
    src/Vehicle/VehicleEstimatorStatusFactGroup.h \
    src/Vehicle/VehicleGPSFactGroup.h \
    src/Vehicle/VehicleLinkManager.h \
    src/Vehicle/VehicleSetpointFactGroup.h \
    src/Vehicle/VehicleTemperatureFactGroup.h \
    src/Vehicle/VehicleVibrationFactGroup.h \
    src/Vehicle/VehicleWindFactGroup.h \
Gus Grubba's avatar
Gus Grubba committed
    src/VehicleSetup/JoystickConfigController.h \
    src/comm/LinkConfiguration.h \
    src/comm/LinkInterface.h \
    src/comm/LinkManager.h \
    src/comm/LogReplayLink.h \
Gus Grubba's avatar
Gus Grubba committed
    src/comm/MAVLinkProtocol.h \
    src/comm/QGCMAVLink.h \
    src/comm/TCPLink.h \
    src/comm/UDPLink.h \
Willian Galvani's avatar
Willian Galvani committed
    src/comm/UdpIODevice.h \
    src/uas/UAS.h \
    src/uas/UASInterface.h \
    src/uas/UASMessageHandler.h \
    src/AnalyzeView/GeoTagController.h \
    src/AnalyzeView/ExifParser.h \
contains (DEFINES, QGC_ENABLE_PAIRING) {
    HEADERS += \
        src/PairingManager/PairingManager.h \
}
AndroidBuild {
HEADERS += \
    src/Joystick/JoystickAndroid.h \
DebugBuild {
HEADERS += \
    src/comm/MockLink.h \
    src/comm/MockLinkFTP.h \
    src/comm/MockLinkMissionItemHandler.h \
}

WindowsBuild {
    PRECOMPILED_HEADER += src/stable_headers.h
    HEADERS += src/stable_headers.h
Daniel Agar's avatar
Daniel Agar committed
    CONFIG -= silent
dogmaphobic's avatar
dogmaphobic committed
contains(DEFINES, QGC_ENABLE_BLUETOOTH) {
dogmaphobic's avatar
dogmaphobic committed
    HEADERS += \
    src/comm/BluetoothLink.h \
dogmaphobic's avatar
dogmaphobic committed
}
contains (DEFINES, QGC_ENABLE_PAIRING) {
    contains(DEFINES, QGC_ENABLE_QTNFC) {
        HEADERS += \
            src/PairingManager/QtNFC.h
    }
}

Gus Grubba's avatar
Gus Grubba committed
!NoSerialBuild {
    src/comm/QGCSerialPortInfo.h \
    src/comm/SerialLink.h \
}

!MobileBuild {
HEADERS += \
Gus Grubba's avatar
Gus Grubba committed
    src/GPS/Drivers/src/gps_helper.h \
    src/GPS/Drivers/src/rtcm.h \
    src/GPS/Drivers/src/ashtech.h \
Gus Grubba's avatar
Gus Grubba committed
    src/GPS/Drivers/src/ubx.h \
    src/GPS/Drivers/src/sbf.h \
Gus Grubba's avatar
Gus Grubba committed
    src/GPS/GPSManager.h \
    src/GPS/GPSPositionMessage.h \
    src/GPS/GPSProvider.h \
    src/GPS/RTCM/RTCMMavlink.h \
    src/GPS/definitions.h \
    src/GPS/satellite_info.h \
    src/GPS/vehicle_gps_position.h \
    src/Joystick/JoystickSDL.h \
    src/RunGuard.h \
Don Gagne's avatar
Don Gagne committed
iOSBuild {
    OBJECTIVE_SOURCES += \
        src/MobileScreenMgr.mm \
}
Don Gagne's avatar
Don Gagne committed
AndroidBuild {
Don Gagne's avatar
Don Gagne committed
    SOURCES += src/MobileScreenMgr.cc \
    src/Joystick/JoystickAndroid.cc \
    src/ADSB/ADSBVehicle.cc \
    src/ADSB/ADSBVehicleManager.cc \
    src/AnalyzeView/LogDownloadController.cc \
    src/AnalyzeView/PX4LogParser.cc \
    src/AnalyzeView/ULogParser.cc \
    src/AnalyzeView/MavlinkConsoleController.cc \
    src/Audio/AudioOutput.cc \
    src/Camera/QGCCameraControl.cc \
    src/Camera/QGCCameraIO.cc \
    src/Camera/QGCCameraManager.cc \
    src/CmdLineOptParser.cc \
Gus Grubba's avatar
Gus Grubba committed
    src/FollowMe/FollowMe.cc \
    src/Joystick/Joystick.cc \
    src/Joystick/JoystickManager.cc \
Don Gagne's avatar
Don Gagne committed
    src/JsonHelper.cc \
    src/KMLDomDocument.cc \
    src/KMLHelper.cc \
    src/LogCompressor.cc \
    src/MissionManager/CameraCalc.cc \
    src/MissionManager/CameraSection.cc \
    src/MissionManager/CameraSpec.cc \
    src/MissionManager/ComplexMissionItem.cc \
    src/MissionManager/CorridorScanComplexItem.cc \
    src/MissionManager/CorridorScanPlanCreator.cc \
    src/MissionManager/BlankPlanCreator.cc \
    src/MissionManager/FixedWingLandingComplexItem.cc \
    src/MissionManager/GeoFenceController.cc \
    src/MissionManager/GeoFenceManager.cc \
    src/MissionManager/KMLPlanDomDocument.cc \
    src/MissionManager/LandingComplexItem.cc \
    src/MissionManager/MissionCommandList.cc \
    src/MissionManager/MissionCommandTree.cc \
    src/MissionManager/MissionCommandUIInfo.cc \
    src/MissionManager/MissionController.cc \
    src/MissionManager/MissionItem.cc \
    src/MissionManager/MissionManager.cc \
    src/MissionManager/MissionSettingsItem.cc \
    src/MissionManager/PlanElementController.cc \
    src/MissionManager/PlanCreator.cc \
    src/MissionManager/PlanManager.cc \
    src/MissionManager/PlanMasterController.cc \
    src/MissionManager/QGCFenceCircle.cc \
    src/MissionManager/QGCFencePolygon.cc \
    src/MissionManager/QGCMapCircle.cc \
    src/MissionManager/QGCMapPolygon.cc \
    src/MissionManager/QGCMapPolyline.cc \
    src/MissionManager/RallyPoint.cc \
    src/MissionManager/RallyPointController.cc \
    src/MissionManager/RallyPointManager.cc \
    src/MissionManager/SimpleMissionItem.cc \
    src/MissionManager/SpeedSection.cc \
    src/MissionManager/StructureScanComplexItem.cc \
    src/MissionManager/StructureScanPlanCreator.cc \
    src/MissionManager/SurveyComplexItem.cc \
    src/MissionManager/SurveyPlanCreator.cc \