You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
891 lines
25 KiB
891 lines
25 KiB
cmake_minimum_required(VERSION 3.2) |
|
|
|
project(QGroundControl LANGUAGES CXX) |
|
|
|
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug;Release;RelWithDebInfo;MinSizeRel;Coverage") |
|
|
|
# CMake build type |
|
# Debug Release RelWithDebInfo MinSizeRel Coverage |
|
if (NOT CMAKE_BUILD_TYPE) |
|
# default to release with debug symbols |
|
set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "Build type" FORCE) |
|
endif() |
|
|
|
if(DEFINED ENV{QT_VERSION}) |
|
set(QT_VERSION $ENV{QT_VERSION}) |
|
endif() |
|
|
|
if(NOT QT_VERSION) |
|
# try Qt 5.11.0 if none specified |
|
set(QT_VERSION "5.11.1") |
|
endif() |
|
|
|
if(DEFINED ENV{QT_MKSPEC}) |
|
set(QT_MKSPEC $ENV{QT_MKSPEC}) |
|
endif() |
|
|
|
if(UNIX AND NOT APPLE) |
|
set(LINUX TRUE) |
|
endif() |
|
|
|
if(NOT QT_MKSPEC) |
|
if(APPLE) |
|
set(QT_MKSPEC clang_64) |
|
elseif(LINUX) |
|
set(QT_MKSPEC gcc_64) |
|
elseif(WIN32) |
|
set(QT_MKSPEC msvc2017_64) |
|
#set(QT_MKSPEC winrt_x64_msvc2017) |
|
endif() |
|
endif() |
|
|
|
# Add folder where are supportive functions |
|
list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake) |
|
|
|
message(STATUS "Build Type: ${CMAKE_BUILD_TYPE}") |
|
message(STATUS "Qt version: ${QT_VERSION}") |
|
message(STATUS "Qt spec: ${QT_MKSPEC}") |
|
|
|
set(COMPANY "Mavlink") |
|
set(COPYRIGHT "Copyright (c) 2018 QGroundControl. All rights reserved.") |
|
set(IDENTIFIER "io.mavlink.qgroundcontrol") |
|
|
|
execute_process( |
|
COMMAND git submodule update --init |
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} |
|
) |
|
|
|
execute_process( |
|
COMMAND git describe --always --tags |
|
OUTPUT_VARIABLE git_tag |
|
OUTPUT_STRIP_TRAILING_WHITESPACE |
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} |
|
) |
|
|
|
add_definitions( |
|
-DQGC_APPLICATION_NAME="QGroundControl" |
|
-DQGC_ORG_NAME="QGroundControl.org" |
|
-DQGC_ORG_DOMAIN="org.qgroundcontrol" |
|
) |
|
|
|
message(STATUS "QGroundControl version: ${git_tag}") |
|
|
|
set(CMAKE_CXX_STANDARD 14) |
|
set(CMAKE_AUTOMOC ON) |
|
set(CMAKE_AUTOUIC ON) |
|
set(CMAKE_AUTORCC ON) |
|
set(CMAKE_INCLUDE_CURRENT_DIR ON) |
|
|
|
#============================================================================= |
|
# ccache |
|
# |
|
option(CCACHE "Use ccache if available" ON) |
|
find_program(CCACHE_PROGRAM ccache) |
|
if (CCACHE AND CCACHE_PROGRAM AND NOT DEFINED ENV{CCACHE_DISABLE}) |
|
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_PROGRAM}") |
|
endif() |
|
|
|
#============================================================================= |
|
# Qt5 |
|
# |
|
find_package(Qt5 ${QT_VERSION} |
|
COMPONENTS |
|
Bluetooth |
|
Concurrent |
|
Core |
|
Location |
|
Multimedia |
|
Network |
|
Positioning |
|
Quick |
|
QuickWidgets |
|
Sql |
|
Svg |
|
Test |
|
TextToSpeech |
|
Widgets |
|
Xml |
|
REQUIRED |
|
HINTS |
|
$ENV{HOME}/Qt/${QT_VERSION}/${QT_MKSPEC} |
|
$ENV{QT_PATH}/${QT_VERSION}/${QT_MKSPEC} |
|
C:/Qt |
|
) |
|
|
|
if(NOT QT_MKSPEC MATCHES "winrt") |
|
find_package(Qt5 ${QT_VERSION} |
|
COMPONENTS |
|
SerialPort |
|
REQUIRED |
|
HINTS |
|
$ENV{HOME}/Qt/${QT_VERSION}/${QT_MKSPEC} |
|
$ENV{QT_PATH}/${QT_VERSION}/${QT_MKSPEC} |
|
C:/Qt |
|
) |
|
endif() |
|
|
|
if(${CMAKE_BUILD_TYPE} MATCHES "Debug") |
|
include(CTest) |
|
enable_testing() |
|
add_definitions(-DUNITTEST_BUILD) |
|
endif() |
|
|
|
if(LINUX) |
|
find_package(SDL2 REQUIRED) |
|
include_directories(${SDL2_INCLUDE_DIRS}) |
|
string(STRIP ${SDL2_LIBRARIES} SDL2_LIBRARIES) # work around for cmake warning |
|
elseif(APPLE) |
|
include_directories(libs/lib/Frameworks/SDL2.framework/Headers) |
|
elseif(WIN32) |
|
include_directories(libs/lib/sdl2/msvc/include) |
|
endif() |
|
|
|
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang") |
|
# clang and AppleClang |
|
add_compile_options( |
|
-Wall |
|
-Wextra |
|
-Werror |
|
|
|
-frtti |
|
|
|
-Wno-address-of-packed-member # ignore for mavlink |
|
) |
|
|
|
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") |
|
# GCC |
|
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.9) |
|
add_compile_options(-fdiagnostics-color=always) |
|
endif() |
|
|
|
add_compile_options( |
|
-Wall |
|
-Wextra |
|
-Werror |
|
|
|
-frtti |
|
) |
|
|
|
elseif (WIN32) |
|
|
|
add_definitions(-D_USE_MATH_DEFINES) |
|
add_compile_options( |
|
/wd4244 # warning C4244: '=': conversion from 'double' to 'float', possible loss of data |
|
) |
|
|
|
endif() |
|
|
|
|
|
set(QGC_SRC) |
|
list(APPEND QGC_SRC |
|
|
|
libs/qwt/qwt_abstract_legend.cpp |
|
libs/qwt/qwt_abstract_scale.cpp |
|
libs/qwt/qwt_abstract_scale_draw.cpp |
|
libs/qwt/qwt_abstract_slider.cpp |
|
libs/qwt/qwt_analog_clock.cpp |
|
libs/qwt/qwt_arrow_button.cpp |
|
libs/qwt/qwt_clipper.cpp |
|
libs/qwt/qwt_color_map.cpp |
|
libs/qwt/qwt_compass.cpp |
|
libs/qwt/qwt_compass_rose.cpp |
|
libs/qwt/qwt_counter.cpp |
|
libs/qwt/qwt_curve_fitter.cpp |
|
libs/qwt/qwt_dial.cpp |
|
libs/qwt/qwt_dial_needle.cpp |
|
libs/qwt/qwt_dyngrid_layout.cpp |
|
libs/qwt/qwt_event_pattern.cpp |
|
libs/qwt/qwt_graphic.cpp |
|
libs/qwt/qwt_interval.cpp |
|
libs/qwt/qwt_knob.cpp |
|
libs/qwt/qwt_legend.cpp |
|
libs/qwt/qwt_legend_data.cpp |
|
libs/qwt/qwt_legend_label.cpp |
|
libs/qwt/qwt_magnifier.cpp |
|
libs/qwt/qwt_math.cpp |
|
libs/qwt/qwt_null_paintdevice.cpp |
|
libs/qwt/qwt_painter.cpp |
|
libs/qwt/qwt_painter_command.cpp |
|
libs/qwt/qwt_panner.cpp |
|
libs/qwt/qwt_picker.cpp |
|
libs/qwt/qwt_picker_machine.cpp |
|
libs/qwt/qwt_pixel_matrix.cpp |
|
libs/qwt/qwt_plot.cpp |
|
libs/qwt/qwt_plot_axis.cpp |
|
libs/qwt/qwt_plot_canvas.cpp |
|
libs/qwt/qwt_plot_curve.cpp |
|
libs/qwt/qwt_plot_dict.cpp |
|
libs/qwt/qwt_plot_grid.cpp |
|
libs/qwt/qwt_plot_item.cpp |
|
libs/qwt/qwt_plot_layout.cpp |
|
libs/qwt/qwt_plot_magnifier.cpp |
|
libs/qwt/qwt_plot_marker.cpp |
|
libs/qwt/qwt_plot_panner.cpp |
|
libs/qwt/qwt_plot_picker.cpp |
|
libs/qwt/qwt_plot_rasteritem.cpp |
|
libs/qwt/qwt_plot_scaleitem.cpp |
|
libs/qwt/qwt_plot_seriesitem.cpp |
|
libs/qwt/qwt_plot_spectrogram.cpp |
|
libs/qwt/qwt_plot_svgitem.cpp |
|
libs/qwt/qwt_plot_xml.cpp |
|
libs/qwt/qwt_plot_zoomer.cpp |
|
libs/qwt/qwt_point_data.cpp |
|
libs/qwt/qwt_point_mapper.cpp |
|
libs/qwt/qwt_raster_data.cpp |
|
libs/qwt/qwt_round_scale_draw.cpp |
|
libs/qwt/qwt_scale_div.cpp |
|
libs/qwt/qwt_scale_draw.cpp |
|
libs/qwt/qwt_scale_engine.cpp |
|
libs/qwt/qwt_scale_map.cpp |
|
libs/qwt/qwt_scale_widget.cpp |
|
libs/qwt/qwt_series_data.cpp |
|
libs/qwt/qwt_slider.cpp |
|
libs/qwt/qwt_spline.cpp |
|
libs/qwt/qwt_symbol.cpp |
|
libs/qwt/qwt_text.cpp |
|
libs/qwt/qwt_text_engine.cpp |
|
libs/qwt/qwt_text_label.cpp |
|
libs/qwt/qwt_thermo.cpp |
|
libs/qwt/qwt_transform.cpp |
|
libs/qwt/qwt_wheel.cpp |
|
libs/qwt/qwt_widget_overlay.cpp |
|
|
|
src/AnalyzeView/ExifParser.cc |
|
src/AnalyzeView/GeoTagController.cc |
|
src/AnalyzeView/LogDownloadController.cc |
|
src/AnalyzeView/MavlinkConsoleController.cc |
|
src/AnalyzeView/PX4LogParser.cc |
|
src/AnalyzeView/ULogParser.cc |
|
|
|
src/api/QGCCorePlugin.cc |
|
src/api/QGCOptions.cc |
|
src/api/QGCSettings.cc |
|
src/api/QmlComponentInfo.cc |
|
|
|
src/Audio/AudioOutput.cc |
|
|
|
src/AutoPilotPlugins/APM/APMAirframeComponent.cc |
|
src/AutoPilotPlugins/APM/APMAirframeComponentAirframes.cc |
|
src/AutoPilotPlugins/APM/APMAirframeComponentController.cc |
|
src/AutoPilotPlugins/APM/APMAirframeLoader.cc |
|
src/AutoPilotPlugins/APM/APMAutoPilotPlugin.cc |
|
src/AutoPilotPlugins/APM/APMCameraComponent.cc |
|
src/AutoPilotPlugins/APM/APMCompassCal.cc |
|
src/AutoPilotPlugins/APM/APMFlightModesComponent.cc |
|
src/AutoPilotPlugins/APM/APMFlightModesComponentController.cc |
|
src/AutoPilotPlugins/APM/APMLightsComponent.cc |
|
src/AutoPilotPlugins/APM/APMMotorComponent.cc |
|
src/AutoPilotPlugins/APM/APMPowerComponent.cc |
|
src/AutoPilotPlugins/APM/APMRadioComponent.cc |
|
src/AutoPilotPlugins/APM/APMSafetyComponent.cc |
|
src/AutoPilotPlugins/APM/APMSensorsComponent.cc |
|
src/AutoPilotPlugins/APM/APMSensorsComponentController.cc |
|
src/AutoPilotPlugins/APM/APMSubFrameComponent.cc |
|
src/AutoPilotPlugins/APM/APMTuningComponent.cc |
|
src/AutoPilotPlugins/APM/APMHeliComponent.cc |
|
|
|
src/AutoPilotPlugins/Common/ESP8266Component.cc |
|
src/AutoPilotPlugins/Common/ESP8266ComponentController.cc |
|
src/AutoPilotPlugins/Common/MotorComponent.cc |
|
src/AutoPilotPlugins/Common/RadioComponentController.cc |
|
src/AutoPilotPlugins/Common/SyslinkComponent.cc |
|
src/AutoPilotPlugins/Common/SyslinkComponentController.cc |
|
|
|
src/AutoPilotPlugins/PX4/AirframeComponent.cc |
|
src/AutoPilotPlugins/PX4/AirframeComponentAirframes.cc |
|
src/AutoPilotPlugins/PX4/AirframeComponentController.cc |
|
src/AutoPilotPlugins/PX4/CameraComponent.cc |
|
src/AutoPilotPlugins/PX4/FlightModesComponent.cc |
|
src/AutoPilotPlugins/PX4/PowerComponent.cc |
|
src/AutoPilotPlugins/PX4/PowerComponentController.cc |
|
src/AutoPilotPlugins/PX4/PX4AdvancedFlightModesController.cc |
|
src/AutoPilotPlugins/PX4/PX4AirframeLoader.cc |
|
src/AutoPilotPlugins/PX4/PX4AutoPilotPlugin.cc |
|
src/AutoPilotPlugins/PX4/PX4RadioComponent.cc |
|
src/AutoPilotPlugins/PX4/PX4SimpleFlightModesController.cc |
|
src/AutoPilotPlugins/PX4/PX4TuningComponent.cc |
|
src/AutoPilotPlugins/PX4/SafetyComponent.cc |
|
src/AutoPilotPlugins/PX4/SensorsComponent.cc |
|
src/AutoPilotPlugins/PX4/SensorsComponentController.cc |
|
|
|
src/AutoPilotPlugins/AutoPilotPlugin.cc |
|
src/AutoPilotPlugins/Generic/GenericAutoPilotPlugin.cc |
|
|
|
src/Camera/QGCCameraControl.cc |
|
src/Camera/QGCCameraIO.cc |
|
src/Camera/QGCCameraManager.cc |
|
|
|
#src/comm/BluetoothLink.cc |
|
src/comm/LinkConfiguration.cc |
|
src/comm/LinkInterface.cc |
|
src/comm/LinkManager.cc |
|
src/comm/LogReplayLink.cc |
|
src/comm/MavlinkMessagesTimer.cc |
|
src/comm/MAVLinkProtocol.cc |
|
src/comm/QGCFlightGearLink.cc |
|
src/comm/QGCJSBSimLink.cc |
|
src/comm/QGCMAVLink.cc |
|
src/comm/QGCSerialPortInfo.cc |
|
src/comm/QGCXPlaneLink.cc |
|
src/comm/SerialLink.cc |
|
src/comm/TCPLink.cc |
|
src/comm/UDPLink.cc |
|
|
|
src/FactSystem/Fact.cc |
|
src/FactSystem/FactControls/FactPanelController.cc |
|
src/FactSystem/FactGroup.cc |
|
src/FactSystem/FactMetaData.cc |
|
src/FactSystem/FactSystem.cc |
|
src/FactSystem/FactValueSliderListModel.cc |
|
src/FactSystem/ParameterManager.cc |
|
src/FactSystem/SettingsFact.cc |
|
|
|
src/FirmwarePlugin/APM/APMFirmwarePlugin.cc |
|
src/FirmwarePlugin/APM/APMFirmwarePluginFactory.cc |
|
src/FirmwarePlugin/APM/APMParameterMetaData.cc |
|
src/FirmwarePlugin/APM/ArduCopterFirmwarePlugin.cc |
|
src/FirmwarePlugin/APM/ArduPlaneFirmwarePlugin.cc |
|
src/FirmwarePlugin/APM/ArduRoverFirmwarePlugin.cc |
|
src/FirmwarePlugin/APM/ArduSubFirmwarePlugin.cc |
|
|
|
src/FirmwarePlugin/CameraMetaData.cc |
|
src/FirmwarePlugin/FirmwarePlugin.cc |
|
src/FirmwarePlugin/FirmwarePluginManager.cc |
|
|
|
src/FirmwarePlugin/PX4/PX4FirmwarePlugin.cc |
|
src/FirmwarePlugin/PX4/PX4FirmwarePluginFactory.cc |
|
src/FirmwarePlugin/PX4/PX4ParameterMetaData.cc |
|
|
|
src/FlightDisplay/VideoManager.cc |
|
|
|
src/FlightMap/Widgets/ValuesWidgetController.cc |
|
|
|
src/FollowMe/FollowMe.cc |
|
|
|
src/GPS/Drivers/src/ashtech.cpp |
|
src/GPS/Drivers/src/gps_helper.cpp |
|
src/GPS/Drivers/src/mtk.cpp |
|
src/GPS/Drivers/src/rtcm.cpp |
|
src/GPS/Drivers/src/ubx.cpp |
|
src/GPS/GPSManager.cc |
|
src/GPS/GPSProvider.cc |
|
src/GPS/RTCM/RTCMMavlink.cc |
|
|
|
src/Joystick/Joystick.cc |
|
src/Joystick/JoystickManager.cc |
|
src/Joystick/JoystickSDL.cc |
|
|
|
src/MissionManager/CameraCalc.cc |
|
src/MissionManager/CameraSection.cc |
|
src/MissionManager/CameraSpec.cc |
|
src/MissionManager/ComplexMissionItem.cc |
|
src/MissionManager/CorridorScanComplexItem.cc |
|
src/MissionManager/FixedWingLandingComplexItem.cc |
|
src/MissionManager/GeoFenceController.cc |
|
src/MissionManager/GeoFenceManager.cc |
|
src/MissionManager/KML.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/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/SurveyComplexItem.cc |
|
src/MissionManager/TransectStyleComplexItem.cc |
|
src/MissionManager/VisualMissionItem.cc |
|
|
|
src/PositionManager/PositionManager.cpp |
|
src/PositionManager/SimulatedPosition.cc |
|
|
|
src/QmlControls/AppMessages.cc |
|
src/QmlControls/CoordinateVector.cc |
|
src/QmlControls/EditPositionDialogController.cc |
|
src/QmlControls/ParameterEditorController.cc |
|
src/QmlControls/QGCFileDialogController.cc |
|
src/QmlControls/QGCGeoBoundingCube.cc |
|
src/QmlControls/QGCImageProvider.cc |
|
src/QmlControls/QGroundControlQmlGlobal.cc |
|
src/QmlControls/QmlObjectListModel.cc |
|
src/QmlControls/QmlTestWidget.cc |
|
src/QmlControls/RCChannelMonitorController.cc |
|
src/QmlControls/ScreenToolsController.cc |
|
|
|
src/QtLocationPlugin/QGCMapEngine.cpp |
|
src/QtLocationPlugin/QGCMapTileSet.cpp |
|
src/QtLocationPlugin/QGCMapUrlEngine.cpp |
|
src/QtLocationPlugin/QGCTileCacheWorker.cpp |
|
src/QtLocationPlugin/QGeoCodeReplyQGC.cpp |
|
src/QtLocationPlugin/QGeoCodingManagerEngineQGC.cpp |
|
src/QtLocationPlugin/QGeoMapReplyQGC.cpp |
|
src/QtLocationPlugin/QGeoServiceProviderPluginQGC.cpp |
|
src/QtLocationPlugin/QGeoTiledMappingManagerEngineQGC.cpp |
|
src/QtLocationPlugin/QGeoTileFetcherQGC.cpp |
|
src/QtLocationPlugin/QMLControl/QGCMapEngineManager.cc |
|
|
|
src/Settings/AppSettings.cc |
|
src/Settings/AutoConnectSettings.cc |
|
src/Settings/BrandImageSettings.cc |
|
src/Settings/FlightMapSettings.cc |
|
src/Settings/GuidedSettings.cc |
|
src/Settings/RTKSettings.cc |
|
src/Settings/SettingsGroup.cc |
|
src/Settings/SettingsManager.cc |
|
src/Settings/UnitsSettings.cc |
|
src/Settings/VideoSettings.cc |
|
|
|
src/Terrain/TerrainQuery.cc |
|
|
|
src/uas/FileManager.cc |
|
src/uas/UAS.cc |
|
src/uas/UASMessageHandler.cc |
|
|
|
src/ui/HILDockWidget.cc |
|
src/ui/linechart/ChartPlot.cc |
|
src/ui/linechart/IncrementalPlot.cc |
|
src/ui/linechart/LinechartPlot.cc |
|
src/ui/linechart/Linecharts.cc |
|
src/ui/linechart/LinechartWidget.cc |
|
src/ui/linechart/Scrollbar.cc |
|
src/ui/linechart/ScrollZoomer.cc |
|
src/ui/MainWindow.cc |
|
src/ui/MAVLinkDecoder.cc |
|
src/ui/MultiVehicleDockWidget.cc |
|
src/ui/QGCHilConfiguration.cc |
|
src/ui/QGCHilFlightGearConfiguration.cc |
|
src/ui/QGCHilJSBSimConfiguration.cc |
|
src/ui/QGCHilXPlaneConfiguration.cc |
|
src/ui/QGCMapRCToParamDialog.cpp |
|
src/ui/QGCMAVLinkInspector.cc |
|
src/ui/QGCMAVLinkLogPlayer.cc |
|
src/ui/QGCPluginHost.cc |
|
src/ui/QGCUASFileView.cc |
|
src/ui/QGCUASFileViewMulti.cc |
|
src/ui/uas/QGCUnconnectedInfoWidget.cc |
|
|
|
src/Vehicle/ADSBVehicle.cc |
|
src/Vehicle/GPSRTKFactGroup.cc |
|
src/Vehicle/MAVLinkLogManager.cc |
|
src/Vehicle/MultiVehicleManager.cc |
|
src/Vehicle/Vehicle.cc |
|
|
|
src/VehicleSetup/Bootloader.cc |
|
src/VehicleSetup/FirmwareImage.cc |
|
src/VehicleSetup/FirmwareUpgradeController.cc |
|
src/VehicleSetup/JoystickConfigController.cc |
|
src/VehicleSetup/PX4FirmwareUpgradeThread.cc |
|
src/VehicleSetup/VehicleComponent.cc |
|
|
|
src/VideoStreaming/VideoItem.cc |
|
src/VideoStreaming/VideoReceiver.cc |
|
src/VideoStreaming/VideoStreaming.cc |
|
src/VideoStreaming/VideoSurface.cc |
|
|
|
src/ViewWidgets/CustomCommandWidget.cc |
|
src/ViewWidgets/CustomCommandWidgetController.cc |
|
src/ViewWidgets/ViewWidgetController.cc |
|
|
|
src/CmdLineOptParser.cc |
|
src/JsonHelper.cc |
|
src/KMLFileHelper.cc |
|
src/LogCompressor.cc |
|
src/main.cc |
|
src/QGC.cc |
|
src/QGCApplication.cc |
|
src/QGCComboBox.cc |
|
src/QGCDockWidget.cc |
|
src/QGCFileDownload.cc |
|
src/QGCGeo.cc |
|
src/QGCLoggingCategory.cc |
|
src/QGCMapPalette.cc |
|
src/QGCPalette.cc |
|
src/QGCQFileDialog.cc |
|
src/QGCQGeoCoordinate.cc |
|
src/QGCQmlWidgetHolder.cpp |
|
src/QGCQuickWidget.cc |
|
src/QGCTemporaryFile.cc |
|
src/QGCToolbox.cc |
|
src/RunGuard.cc |
|
src/TerrainTile.cc |
|
src/UTM.cpp |
|
|
|
# HEADERS |
|
# shouldn't be listed here, but aren't named properly for AUTOMOC |
|
src/comm/QGCFlightGearLink.h |
|
src/comm/QGCHilLink.h |
|
src/comm/QGCJSBSimLink.h |
|
src/MissionManager/Section.h |
|
src/QtLocationPlugin/QGCMapEngineData.h |
|
src/uas/UAS.h |
|
src/uas/UASInterface.h |
|
src/ui/QGCHilFlightGearConfiguration.h |
|
src/ui/QGCHilJSBSimConfiguration.h |
|
) |
|
|
|
if(QGC_AIRMAP) |
|
|
|
list(APPEND QGC_SRC |
|
src/Airmap/AirMapAdvisoryManager.cc |
|
src/Airmap/AirMapFlightManager.cc |
|
src/Airmap/AirMapFlightPlanManager.cc |
|
src/Airmap/AirMapManager.cc |
|
src/Airmap/AirMapRestrictionManager.cc |
|
src/Airmap/AirMapRulesetsManager.cc |
|
src/Airmap/AirMapSettings.cc |
|
src/Airmap/AirMapSharedState.cc |
|
src/Airmap/AirMapTelemetry.cc |
|
src/Airmap/AirMapTrafficMonitor.cc |
|
src/Airmap/AirMapVehicleManager.cc |
|
src/Airmap/AirMapWeatherInfoManager.cc |
|
|
|
src/AirspaceManagement/AirspaceAdvisoryProvider.cc |
|
src/AirspaceManagement/AirspaceFlightPlanProvider.cc |
|
src/AirspaceManagement/AirspaceManager.cc |
|
src/AirspaceManagement/AirspaceRestriction.cc |
|
src/AirspaceManagement/AirspaceRestrictionProvider.cc |
|
src/AirspaceManagement/AirspaceRulesetsProvider.cc |
|
src/AirspaceManagement/AirspaceVehicleManager.cc |
|
src/AirspaceManagement/AirspaceWeatherInfoProvider.cc |
|
) |
|
else() |
|
list(APPEND QGC_SRC |
|
src/Airmap/dummy/AirspaceManager.cc |
|
) |
|
include_directories(src/Airmap/dummy) |
|
endif() |
|
|
|
set_source_files_properties(${CMAKE_SOURCE_DIR}/src/QGCApplication.cc PROPERTIES COMPILE_DEFINITIONS GIT_VERSION="${git_tag}") |
|
|
|
if(MOBILE) |
|
list(APPEND QGC_SRC |
|
src/MobileScreenMgr.cc |
|
) |
|
|
|
if (ANDROID) |
|
list(APPEND QGC_SRC |
|
libs/qtandroidserialport/src/qserialport.cpp |
|
libs/qtandroidserialport/src/qserialport_android.cpp |
|
libs/qtandroidserialport/src/qserialportinfo.cpp |
|
libs/qtandroidserialport/src/qserialportinfo_android.cpp |
|
|
|
src/Joystick/JoystickAndroid.cc |
|
) |
|
endif() |
|
endif() |
|
|
|
if(BUILD_TESTING) |
|
|
|
add_custom_target(check |
|
COMMAND ctest --output-on-failure . |
|
USES_TERMINAL |
|
) |
|
|
|
function (add_qgc_test test_name) |
|
add_test( |
|
NAME ${test_name} |
|
COMMAND $<TARGET_FILE:QGroundControl> --unittest:${test_name} |
|
) |
|
add_dependencies(check QGroundControl) |
|
endfunction() |
|
|
|
list(APPEND QGC_SRC |
|
src/AnalyzeView/LogDownloadTest.cc |
|
|
|
src/Audio/AudioOutputTest.cc |
|
|
|
src/comm/MockLink.cc |
|
src/comm/MockLinkFileServer.cc |
|
src/comm/MockLinkMissionItemHandler.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 |
|
src/MissionManager/MissionCommandTreeTest.cc |
|
src/MissionManager/MissionControllerManagerTest.cc |
|
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/VisualMissionItemTest.cc |
|
|
|
src/qgcunittest/FileDialogTest.cc |
|
src/qgcunittest/FileManagerTest.cc |
|
src/qgcunittest/FlightGearTest.cc |
|
src/qgcunittest/GeoTest.cc |
|
src/qgcunittest/LinkManagerTest.cc |
|
src/qgcunittest/MainWindowTest.cc |
|
src/qgcunittest/MavlinkLogTest.cc |
|
src/qgcunittest/MessageBoxTest.cc |
|
src/qgcunittest/MultiSignalSpy.cc |
|
src/qgcunittest/RadioConfigTest.cc |
|
src/qgcunittest/TCPLinkTest.cc |
|
src/qgcunittest/TCPLoopBackServer.cc |
|
src/qgcunittest/UnitTest.cc |
|
src/qgcunittest/UnitTestList.cc |
|
|
|
src/Vehicle/SendMavCommandTest.cc |
|
) |
|
|
|
add_qgc_test(AudioOutputTest) |
|
add_qgc_test(CameraCalcTest) |
|
add_qgc_test(CameraSectionTest) |
|
add_qgc_test(CorridorScanComplexItemTest) |
|
add_qgc_test(FactSystemTestGeneric) |
|
add_qgc_test(FactSystemTestPX4) |
|
add_qgc_test(FileDialogTest) |
|
add_qgc_test(FileManagerTest) |
|
add_qgc_test(FlightGearUnitTest) |
|
add_qgc_test(GeoTest) |
|
add_qgc_test(LinkManagerTest) |
|
add_qgc_test(LogDownloadTest) |
|
add_qgc_test(MessageBoxTest) |
|
add_qgc_test(MissionCommandTreeTest) |
|
add_qgc_test(MissionControllerTest) |
|
add_qgc_test(MissionItemTest) |
|
add_qgc_test(MissionManagerTest) |
|
add_qgc_test(MissionSettingsTest) |
|
add_qgc_test(ParameterManagerTest) |
|
add_qgc_test(PlanMasterControllerTest) |
|
add_qgc_test(QGCMapPolygonTest) |
|
add_qgc_test(QGCMapPolylineTest) |
|
add_qgc_test(RadioConfigTest) |
|
add_qgc_test(SendMavCommandTest) |
|
add_qgc_test(SimpleMissionItemTest) |
|
add_qgc_test(SpeedSectionTest) |
|
add_qgc_test(StructureScanComplexItemTest) |
|
add_qgc_test(SurveyComplexItemTest) |
|
add_qgc_test(TCPLinkTest) |
|
add_qgc_test(TransectStyleComplexItemTest) |
|
|
|
endif() |
|
|
|
if (VIDEO) |
|
list(APPEND QGC_SRC |
|
src/VideoStreaming/gstqtvideosink/delegates/basedelegate.cpp |
|
src/VideoStreaming/gstqtvideosink/delegates/qtquick2videosinkdelegate.cpp |
|
src/VideoStreaming/gstqtvideosink/delegates/qtvideosinkdelegate.cpp |
|
src/VideoStreaming/gstqtvideosink/delegates/qwidgetvideosinkdelegate.cpp |
|
src/VideoStreaming/gstqtvideosink/gstqtglvideosink.cpp |
|
src/VideoStreaming/gstqtvideosink/gstqtglvideosinkbase.cpp |
|
src/VideoStreaming/gstqtvideosink/gstqtquick2videosink.cpp |
|
src/VideoStreaming/gstqtvideosink/gstqtvideosink.cpp |
|
src/VideoStreaming/gstqtvideosink/gstqtvideosinkbase.cpp |
|
src/VideoStreaming/gstqtvideosink/gstqtvideosinkplugin.cpp |
|
src/VideoStreaming/gstqtvideosink/gstqwidgetvideosink.cpp |
|
src/VideoStreaming/gstqtvideosink/painters/genericsurfacepainter.cpp |
|
src/VideoStreaming/gstqtvideosink/painters/openglsurfacepainter.cpp |
|
src/VideoStreaming/gstqtvideosink/painters/videomaterial.cpp |
|
src/VideoStreaming/gstqtvideosink/painters/videonode.cpp |
|
src/VideoStreaming/gstqtvideosink/utils/bufferformat.cpp |
|
src/VideoStreaming/gstqtvideosink/utils/utils.cpp |
|
) |
|
endif() |
|
|
|
set(QGC_RESOURCES) |
|
list(APPEND QGC_RESOURCES |
|
#HackAndroidFileDialog.qrc |
|
HackFileDialog.qrc |
|
qgcresources.qrc |
|
qgroundcontrol.qrc |
|
src/FirmwarePlugin/APM/APMResources.qrc |
|
src/FirmwarePlugin/PX4/PX4Resources.qrc |
|
|
|
src/Airmap/airmap.qrc |
|
) |
|
|
|
if(BUILD_TESTING) |
|
list(APPEND QGC_RESOURCES |
|
UnitTest.qrc |
|
) |
|
endif() |
|
|
|
# TODO: get qtquick compiler working |
|
#qtquick_compiler_add_resources(QGC_RESOURCES ${QGC_RESOURCES} |
|
#find_package(Qt5QuickCompiler) |
|
|
|
set(QGC_UI) |
|
list(APPEND QGC_UI |
|
#src/ui/Linechart.ui |
|
src/QGCQmlWidgetHolder.ui |
|
src/ui/MainWindow.ui |
|
src/ui/MultiVehicleDockWidget.ui |
|
src/ui/QGCHilConfiguration.ui |
|
src/ui/QGCHilFlightGearConfiguration.ui |
|
src/ui/QGCHilJSBSimConfiguration.ui |
|
src/ui/QGCHilXPlaneConfiguration.ui |
|
src/ui/QGCMapRCToParamDialog.ui |
|
src/ui/QGCMAVLinkInspector.ui |
|
src/ui/QGCMAVLinkLogPlayer.ui |
|
src/ui/QGCPluginHost.ui |
|
src/ui/QGCUASFileView.ui |
|
src/ui/QGCUASFileViewMulti.ui |
|
src/ui/QMap3D.ui |
|
src/ui/uas/QGCUnconnectedInfoWidget.ui |
|
) |
|
|
|
include_directories( |
|
|
|
src/QtLocationPlugin/QMLControl |
|
#src/QtLocationPlugin/qtlocation/include/QtLocation |
|
#src/QtLocationPlugin/qtlocation/include/QtLocation/5.5.1 |
|
#src/QtLocationPlugin/qtlocation/include/QtPositioning/5.5.1 |
|
${Qt5Location_PRIVATE_INCLUDE_DIRS} |
|
|
|
libs/eigen |
|
|
|
libs/mavlink/include/mavlink/v2.0 |
|
libs/mavlink/include/mavlink/v2.0/ardupilotmega |
|
libs/mavlink/include/mavlink/v2.0/common |
|
|
|
libs/qwt |
|
|
|
src |
|
|
|
src/AnalyzeView |
|
src/api |
|
src/Audio |
|
src/AutoPilotPlugins |
|
src/AutoPilotPlugins/APM |
|
src/AutoPilotPlugins/Common |
|
src/AutoPilotPlugins/PX4 |
|
src/Camera |
|
src/comm |
|
src/FactSystem |
|
src/FactSystem/FactControls |
|
src/FirmwarePlugin |
|
src/FirmwarePlugin/APM |
|
src/FlightDisplay |
|
src/FlightMap/Widgets |
|
src/FollowMe |
|
src/GPS |
|
src/Joystick |
|
src/MissionManager |
|
src/PositionManager |
|
src/qgcunittest |
|
src/QmlControls |
|
src/QtLocationPlugin |
|
src/Settings |
|
src/Terrain |
|
src/uas |
|
src/ui |
|
src/ui/linechart |
|
src/Vehicle |
|
src/VehicleSetup |
|
src/VideoStreaming |
|
src/ViewWidgets |
|
) |
|
|
|
if(ANDROID) |
|
add_library(QGroundControl SHARED ${QGC_SRC} ${QGC_RESOURCES} ${QGC_UI}) |
|
else() |
|
add_executable(QGroundControl ${QGC_SRC} ${QGC_RESOURCES} ${QGC_UI}) |
|
endif() |
|
|
|
target_link_libraries(QGroundControl |
|
Qt5::Bluetooth |
|
Qt5::Concurrent |
|
Qt5::Core |
|
Qt5::Quick |
|
Qt5::QuickWidgets |
|
Qt5::Location |
|
Qt5::Multimedia |
|
Qt5::Positioning |
|
Qt5::Sql |
|
Qt5::Svg |
|
Qt5::Test |
|
Qt5::TextToSpeech |
|
Qt5::Xml |
|
Qt5::Widgets |
|
) |
|
|
|
if(NOT QT_MKSPEC MATCHES "winrt") |
|
target_link_libraries(QGroundControl |
|
Qt5::SerialPort |
|
) |
|
endif() |
|
|
|
if(LINUX) |
|
target_link_libraries(QGroundControl ${SDL2_LIBRARIES}) |
|
elseif(APPLE) |
|
target_link_libraries(QGroundControl -F${CMAKE_SOURCE_DIR}/libs/lib/Frameworks "-framework SDL2") |
|
|
|
set_target_properties(${PROJECT_NAME} PROPERTIES |
|
MACOSX_BUNDLE YES |
|
) |
|
|
|
# deploy |
|
include(Macdeployqt) |
|
macdeployqt(QGroundControl) |
|
|
|
elseif(WIN32) |
|
|
|
if(MSVC) # Check if we are using the Visual Studio compiler |
|
set_target_properties(${PROJECT_NAME} PROPERTIES |
|
WIN32_EXECUTABLE YES |
|
LINK_FLAGS "/ENTRY:mainCRTStartup" |
|
) |
|
endif() |
|
|
|
# Support both 32 and 64 bit builds |
|
if (${CMAKE_SIZEOF_VOID_P} MATCHES 8) |
|
set(SDL2_LIBRARIES "${CMAKE_SOURCE_DIR}/libs/lib/sdl2/msvc/lib/x64/SDL2.lib;${CMAKE_SOURCE_DIR}/libs/lib/sdl2/msvc/lib/x64/SDL2main.lib") |
|
else () |
|
set(SDL2_LIBRARIES "${CMAKE_SOURCE_DIR}/libs/lib/sdl2/msvc/lib/x86/SDL2.lib;${CMAKE_SOURCE_DIR}/libs/lib/sdl2/msvc/lib/x86/SDL2main.lib") |
|
endif () |
|
|
|
string(STRIP "${SDL2_LIBRARIES}" SDL2_LIBRARIES) |
|
|
|
target_link_libraries(QGroundControl ${SDL2_LIBRARIES}) |
|
|
|
# deploy |
|
include(Windeployqt) |
|
windeployqt(QGroundControl "QGroundControl-installer.exe") |
|
|
|
elseif(ANDROID) |
|
include(AddQtAndroidApk) |
|
add_qt_android_apk(QGroundControl.apk QGroundControl |
|
PACKAGE_NAME "io.mavlink.qgroundcontrol" |
|
#KEYSTORE ${CMAKE_CURRENT_LIST_DIR}/mykey.keystore myalias |
|
#KEYSTORE_PASSWORD xxxxx |
|
) |
|
|
|
elseif(LINUX) |
|
# TODO: investigate https://github.com/probonopd/linuxdeployqt |
|
|
|
add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/release/package/QGroundControl.AppImage |
|
COMMAND ${CMAKE_SOURCE_DIR}/deploy/create_linux_appimage.sh ${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR} ${CMAKE_BINARY_DIR}/release/package; |
|
DEPENDS QGroundControl |
|
USES_TERMINAL |
|
) |
|
add_custom_target(appimage DEPENDS ${CMAKE_BINARY_DIR}/release/package/QGroundControl.AppImage) |
|
|
|
endif() |
|
|
|
|