From 73a44b747c4b90f2f4defa5ddd087fbdea372e78 Mon Sep 17 00:00:00 2001 From: Holden Date: Tue, 11 Feb 2025 10:29:09 -0500 Subject: [PATCH 01/10] CMake: Update Exiv2 & SDL2 --- src/AnalyzeView/CMakeLists.txt | 2 +- src/Joystick/CMakeLists.txt | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/AnalyzeView/CMakeLists.txt b/src/AnalyzeView/CMakeLists.txt index baec4f3c6be..7f69523888d 100644 --- a/src/AnalyzeView/CMakeLists.txt +++ b/src/AnalyzeView/CMakeLists.txt @@ -125,7 +125,7 @@ endif() CPMAddPackage( NAME exiv2 - VERSION 0.28.3 + VERSION 0.28.4 GITHUB_REPOSITORY Exiv2/exiv2 OPTIONS "EXIV2_ENABLE_XMP ${_EXIV2_ENABLE_XMP}" diff --git a/src/Joystick/CMakeLists.txt b/src/Joystick/CMakeLists.txt index 77bd57b86b8..f2a5bb711f4 100644 --- a/src/Joystick/CMakeLists.txt +++ b/src/Joystick/CMakeLists.txt @@ -79,9 +79,9 @@ endif() CPMAddPackage( NAME SDL2 - VERSION 2.30.11 + VERSION 2.32.0 GITHUB_REPOSITORY libsdl-org/SDL - GIT_TAG release-2.30.11 + GIT_TAG release-2.32.0 OPTIONS "SDL2_DISABLE_INSTALL ON" "SDL2_DISABLE_INSTALL ON" From 4a74966a1b4fbf09b3d3dd9535659ac39bd2bf77 Mon Sep 17 00:00:00 2001 From: Don Gagne Date: Tue, 11 Feb 2025 12:10:26 -0800 Subject: [PATCH 02/10] Prevent mouse bleed through --- src/QtLocationPlugin/QMLControl/OfflineMapEditor.qml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/QtLocationPlugin/QMLControl/OfflineMapEditor.qml b/src/QtLocationPlugin/QMLControl/OfflineMapEditor.qml index 5b78b5aaf46..32994afb91c 100644 --- a/src/QtLocationPlugin/QMLControl/OfflineMapEditor.qml +++ b/src/QtLocationPlugin/QMLControl/OfflineMapEditor.qml @@ -76,8 +76,11 @@ FlightMap { resetMapToDefaults() updateMap() savedCenter = _map.toCoordinate(Qt.point(_map.width / 2, _map.height / 2), false /* clipToViewPort */) + settingsPage.enabled = false // Prevent mouse events from bleeding through to the settings page which is below this in hierarchy } + Component.onDestruction: settingsPage.enabled = true + Connections { target: QGroundControl.mapEngineManager onErrorMessageChanged: errorDialogComponent.createObject(mainWindow).open() From 64f5a7fe093840ec7e79a5e0ecb556d5ae0d1bd0 Mon Sep 17 00:00:00 2001 From: Don Gagne Date: Tue, 11 Feb 2025 14:55:04 -0800 Subject: [PATCH 03/10] Fix link for android daily --- docs/en/qgc-user-guide/releases/daily_builds.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/qgc-user-guide/releases/daily_builds.md b/docs/en/qgc-user-guide/releases/daily_builds.md index fd0ffe3d7c4..8754a5f82fd 100644 --- a/docs/en/qgc-user-guide/releases/daily_builds.md +++ b/docs/en/qgc-user-guide/releases/daily_builds.md @@ -21,7 +21,7 @@ These can be downloaded from the links below (install as described in [Download ::: - [Linux](https://d176tv9ibo4jno.cloudfront.net/builds/master/QGroundControl-x86_64.AppImage) -- [Android](https://play.google.com/store/apps/details?id=org.mavlink.qgroundcontrolbeta) - Google Play: Listed as _QGroundControl (Daily Test Build)_. +- [Android](https://d176tv9ibo4jno.cloudfront.net/builds/master/QGroundControl.apk) - iOS currently unavailable ::: info From 17efdc57ff27188c0e1adba7d6a2552506ba34ce Mon Sep 17 00:00:00 2001 From: Andre Kjellstrup Date: Tue, 11 Feb 2025 23:08:43 +0100 Subject: [PATCH 04/10] Updated map source for Statkart --- src/QtLocationPlugin/Providers/GenericMapProvider.cpp | 2 +- src/QtLocationPlugin/Providers/GenericMapProvider.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/QtLocationPlugin/Providers/GenericMapProvider.cpp b/src/QtLocationPlugin/Providers/GenericMapProvider.cpp index 426e5005a42..3b9b97f5ba8 100644 --- a/src/QtLocationPlugin/Providers/GenericMapProvider.cpp +++ b/src/QtLocationPlugin/Providers/GenericMapProvider.cpp @@ -33,7 +33,7 @@ QString LINZBasemapMapProvider::_getURL(int x, int y, int zoom) const QString StatkartMapProvider::_getURL(int x, int y, int zoom) const { - return _mapUrl.arg(_mapName).arg(zoom).arg(x).arg(y); + return _mapUrl.arg(zoom).arg(y).arg(x); } QString EniroMapProvider::_getURL(int x, int y, int zoom) const diff --git a/src/QtLocationPlugin/Providers/GenericMapProvider.h b/src/QtLocationPlugin/Providers/GenericMapProvider.h index 755fbc6bdcb..649128bf075 100644 --- a/src/QtLocationPlugin/Providers/GenericMapProvider.h +++ b/src/QtLocationPlugin/Providers/GenericMapProvider.h @@ -127,7 +127,7 @@ class StatkartMapProvider : public MapProvider QString _getURL(int x, int y, int zoom) const final; const QString _mapTypeId; - const QString _mapUrl = QStringLiteral("http://opencache.statkart.no/gatekeeper/gk/gk.open_gmaps?layers=%1&zoom=%2&x=%3&y=%4"); + const QString _mapUrl = QStringLiteral("https://cache.kartverket.no/v1/wmts/1.0.0/topo/default/webmercator/%1/%2/%3"); }; class StatkartTopoMapProvider : public StatkartMapProvider From c79b74fbf03b00a40d3e7c0fb3c19168763bee3b Mon Sep 17 00:00:00 2001 From: Andre Kjellstrup Date: Tue, 11 Feb 2025 23:14:29 +0100 Subject: [PATCH 05/10] Map-added Svalbard-Maps --- .../Providers/GenericMapProvider.cpp | 5 +++++ .../Providers/GenericMapProvider.h | 18 ++++++++++++++++++ src/QtLocationPlugin/QGCMapUrlEngine.cpp | 1 + 3 files changed, 24 insertions(+) diff --git a/src/QtLocationPlugin/Providers/GenericMapProvider.cpp b/src/QtLocationPlugin/Providers/GenericMapProvider.cpp index 3b9b97f5ba8..3a7226c7dc2 100644 --- a/src/QtLocationPlugin/Providers/GenericMapProvider.cpp +++ b/src/QtLocationPlugin/Providers/GenericMapProvider.cpp @@ -41,6 +41,11 @@ QString EniroMapProvider::_getURL(int x, int y, int zoom) const return _mapUrl.arg(zoom).arg(x).arg((1 << zoom) - 1 - y).arg(_imageFormat); } +QString SvalbardMapProvider::_getURL(int x, int y, int zoom) const +{ + return _mapUrl.arg(zoom).arg(y).arg(x); +} + QString MapQuestMapProvider::_getURL(int x, int y, int zoom) const { return _mapUrl.arg(_getServerNum(x, y, 4)).arg(_mapName).arg(zoom).arg(x).arg(y).arg(_imageFormat); diff --git a/src/QtLocationPlugin/Providers/GenericMapProvider.h b/src/QtLocationPlugin/Providers/GenericMapProvider.h index 649128bf075..c196b1e296e 100644 --- a/src/QtLocationPlugin/Providers/GenericMapProvider.h +++ b/src/QtLocationPlugin/Providers/GenericMapProvider.h @@ -148,6 +148,24 @@ class StatkartBaseMapProvider : public StatkartMapProvider QStringLiteral("norgeskart_bakgrunn")) {} }; +class SvalbardMapProvider : public MapProvider +{ +public: + SvalbardMapProvider() + : MapProvider( + QStringLiteral("Svalbard Topo"), + QStringLiteral("https://www.npolar.no/"), + QStringLiteral("png"), + AVERAGE_TILE_SIZE, + QGeoMapType::StreetMap) {} + +private: + QString _getURL(int x, int y, int zoom) const final; + + const QString _mapUrl = QStringLiteral("https://geodata.npolar.no/arcgis/rest/services/Basisdata/NP_Basiskart_Svalbard_WMTS_3857/MapServer/WMTS/tile/1.0.0/Basisdata_NP_Basiskart_Svalbard_WMTS_3857/default/default028mm/%1/%2/%3"); +}; + + class EniroMapProvider : public MapProvider { public: diff --git a/src/QtLocationPlugin/QGCMapUrlEngine.cpp b/src/QtLocationPlugin/QGCMapUrlEngine.cpp index 5e14d969838..bfceb00133e 100644 --- a/src/QtLocationPlugin/QGCMapUrlEngine.cpp +++ b/src/QtLocationPlugin/QGCMapUrlEngine.cpp @@ -39,6 +39,7 @@ const QList UrlFactory::_providers = { std::make_shared(), std::make_shared(), + std::make_shared(), std::make_shared(), From 1e598db6dc087dd048515f33c78d829631292a3e Mon Sep 17 00:00:00 2001 From: Holden Date: Tue, 11 Feb 2025 20:33:00 -0500 Subject: [PATCH 06/10] CI: Enable android-macos Workflow --- .github/workflows/android-macos.yml | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/.github/workflows/android-macos.yml b/.github/workflows/android-macos.yml index a48ca9a84cf..ec8d6d77f20 100644 --- a/.github/workflows/android-macos.yml +++ b/.github/workflows/android-macos.yml @@ -1,7 +1,19 @@ name: Android-MacOS on: - workflow_dispatch: + push: + branches: + - master + - 'Stable*' + tags: + - 'v*' + pull_request: + paths: + - '.github/workflows/android-macos.yml' + - 'deploy/android/**' + - 'src/**' + - 'android/**' + - 'CMakeLists.txt' # concurrency: # group: ${{ github.workflow }}-${{ github.ref }} @@ -21,6 +33,7 @@ jobs: env: ARTIFACT: QGroundControl.apk + PACKAGE: QGroundControl QT_VERSION: 6.8.1 GST_VERSION: 1.22.12 QT_ANDROID_KEYSTORE_PATH: ${{ github.workspace }}/deploy/android/android_release.keystore @@ -66,5 +79,5 @@ jobs: - name: Save APK uses: actions/upload-artifact@v4 with: - name: ${{ env.ARTIFACT }} + name: ${{ env.PACKAGE }} path: ${{ runner.temp }}/shadow_build_dir/android-build/*.apk From 7aa8b7dcfc95a2578fc3880fe989c02673937e7e Mon Sep 17 00:00:00 2001 From: Don Gagne Date: Tue, 11 Feb 2025 18:17:19 -0800 Subject: [PATCH 07/10] Remove enter key to close dialogs This would leads to unexpected dialog close both on desktop and mobile. But much worse on mobile with virtual keyboard. --- src/QmlControls/QGCPopupDialog.qml | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/QmlControls/QGCPopupDialog.qml b/src/QmlControls/QGCPopupDialog.qml index 7e4989c2d70..ca8480f8af8 100644 --- a/src/QmlControls/QGCPopupDialog.qml +++ b/src/QmlControls/QGCPopupDialog.qml @@ -263,9 +263,6 @@ Popup { if (event.key === Qt.Key_Escape && _rejectAllowed) { _reject() event.accepted = true - } else if (event.key === Qt.Key_Return || event.key === Qt.Key_Enter) { - _accept() - event.accepted = true } } } From 0c8dddc0bed582bef23c82e4fca496c9f1086e17 Mon Sep 17 00:00:00 2001 From: Holden Ramsey Date: Sat, 8 Feb 2025 04:14:48 -0500 Subject: [PATCH 08/10] CMake: Cleanup CMakeLists --- .github/workflows/android-linux.yml | 1 + .github/workflows/android-windows.yml | 1 + .github/workflows/custom.yml | 1 + .github/workflows/docker-linux.yml | 1 + .github/workflows/linux.yml | 1 + .github/workflows/macos.yml | 1 + .github/workflows/windows.yml | 1 + CMakeLists.txt | 242 +++++------------- cmake/CustomOptions.cmake | 57 +++-- cmake/Install.cmake | 68 +++++ ...{printSummary.cmake => PrintSummary.cmake} | 18 +- cmake/Qt6QGCConfiguration.cmake | 61 ----- custom-example/CMakeLists.txt | 6 +- test/CMakeLists.txt | 3 - 14 files changed, 192 insertions(+), 270 deletions(-) create mode 100644 cmake/Install.cmake rename cmake/{printSummary.cmake => PrintSummary.cmake} (90%) delete mode 100644 cmake/Qt6QGCConfiguration.cmake diff --git a/.github/workflows/android-linux.yml b/.github/workflows/android-linux.yml index d732216728d..d50703d2533 100644 --- a/.github/workflows/android-linux.yml +++ b/.github/workflows/android-linux.yml @@ -14,6 +14,7 @@ on: - 'src/**' - 'android/**' - 'CMakeLists.txt' + - 'cmake/**' # concurrency: # group: ${{ github.workflow }}-${{ github.ref }} diff --git a/.github/workflows/android-windows.yml b/.github/workflows/android-windows.yml index b8e0e43d40b..fb5b223b344 100644 --- a/.github/workflows/android-windows.yml +++ b/.github/workflows/android-windows.yml @@ -14,6 +14,7 @@ on: - 'src/**' - 'android/**' - 'CMakeLists.txt' + - 'cmake/**' # concurrency: # group: ${{ github.workflow }}-${{ github.ref }} diff --git a/.github/workflows/custom.yml b/.github/workflows/custom.yml index f4cc62d12d8..d9fade3be0f 100644 --- a/.github/workflows/custom.yml +++ b/.github/workflows/custom.yml @@ -14,6 +14,7 @@ on: - 'src/**' - 'custom-example/**' - 'CMakeLists.txt' + - 'cmake/**' # concurrency: # group: ${{ github.workflow }}-${{ github.ref }} diff --git a/.github/workflows/docker-linux.yml b/.github/workflows/docker-linux.yml index 37930b93130..03c924b26c1 100644 --- a/.github/workflows/docker-linux.yml +++ b/.github/workflows/docker-linux.yml @@ -14,6 +14,7 @@ on: - 'deploy/linux/**' - 'src/**' - 'CMakeLists.txt' + - 'cmake/**' # concurrency: # group: ${{ github.workflow }}-${{ github.ref }} diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index e888db1ada8..ac627c6e829 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -14,6 +14,7 @@ on: - 'src/**' - 'test/**' - 'CMakeLists.txt' + - 'cmake/**' # concurrency: # group: ${{ github.workflow }}-${{ github.ref }} diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index 0dcfe837615..f396c65d787 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -13,6 +13,7 @@ on: - 'deploy/macos/**' - 'src/**' - 'CMakeLists.txt' + - 'cmake/**' # concurrency: # group: ${{ github.workflow }}-${{ github.ref }} diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 69961b8dd21..12f0d7fa386 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -13,6 +13,7 @@ on: - 'deploy/windows/**' - 'src/**' - 'CMakeLists.txt' + - 'cmake/**' # concurrency: # group: ${{ github.workflow }}-${{ github.ref }} diff --git a/CMakeLists.txt b/CMakeLists.txt index c88ef213575..2e9460ca03a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,6 +6,11 @@ list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/find-modules ) +if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) + set(CMAKE_BUILD_TYPE Release CACHE STRING "Build type" FORCE) + set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug;Release") +endif() + set(CMAKE_REQUIRED_QUIET ON) ####################################################### @@ -27,7 +32,7 @@ endif() # set(CMAKE_OSX_ARCHITECTURES "arm64") # set(CMAKE_OSX_SYSROOT "iphoneos") -if(APPLE AND NOT IOS) +if(APPLE) set(CMAKE_OSX_DEPLOYMENT_TARGET "12.0") endif() @@ -40,10 +45,6 @@ project(${QGC_APP_NAME} LANGUAGES C CXX ) -if(UNIX AND NOT APPLE AND NOT ANDROID) - set(LINUX TRUE) -endif() - if(APPLE AND NOT IOS) set(MACOS TRUE) endif() @@ -53,7 +54,6 @@ endif() ####################################################### include(GNUInstallDirs) -include(CMakeDependentOption) include(FetchContent) include(CMakePrintHelpers) @@ -64,63 +64,52 @@ set(CMAKE_AUTOMOC ON) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTORCC ON) -set(CMAKE_INCLUDE_CURRENT_DIR OFF) +set(CMAKE_INCLUDE_CURRENT_DIR ON) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(CMAKE_POSITION_INDEPENDENT_CODE ON) -# set(CMAKE_AUTOGEN_BETTER_GRAPH_MULTI_CONFIG ON) -if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) - set(CMAKE_BUILD_TYPE Release CACHE STRING "Build type" FORCE) - set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug;Release") -endif() - -if(LINUX) - set(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR}/AppDir/usr) -else() - set(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR}/staging) +if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + if(LINUX) + set_property(CACHE CMAKE_INSTALL_PREFIX PROPERTY VALUE "${CMAKE_BINARY_DIR}/AppDir/usr") + else() + set_property(CACHE CMAKE_INSTALL_PREFIX PROPERTY VALUE "${CMAKE_BINARY_DIR}/staging") + endif() endif() -if(UNIX) - find_program(CCACHE_PROGRAM ccache) - if(CCACHE_PROGRAM) - message(STATUS "Using CCache") - set(CMAKE_C_COMPILER_LAUNCHER ${CCACHE_PROGRAM}) - set(CMAKE_CXX_COMPILER_LAUNCHER ${CCACHE_PROGRAM}) - if(APPLE) - set(CMAKE_OBJC_COMPILER_LAUNCHER ${CCACHE_PROGRAM}) +if(QGC_USE_CACHE) + if(CMAKE_HOST_UNIX) + find_program(CCACHE_PROGRAM ccache) + if(CCACHE_PROGRAM) + message(STATUS "Using CCache") + set(CMAKE_C_COMPILER_LAUNCHER ${CCACHE_PROGRAM}) + set(CMAKE_CXX_COMPILER_LAUNCHER ${CCACHE_PROGRAM}) + if(APPLE) + set(CMAKE_OBJC_COMPILER_LAUNCHER ${CCACHE_PROGRAM}) + endif() endif() - endif() -elseif(WIN32) - find_program(SCCACHE_PROGRAM sccache) - if(SCCACHE_PROGRAM) - message(STATUS "Using SCCache") - set(CMAKE_C_COMPILER_LAUNCHER ${SCCACHE_PROGRAM}) - set(CMAKE_CXX_COMPILER_LAUNCHER ${SCCACHE_PROGRAM}) - endif() - if(MSVC) - if(CMAKE_BUILD_TYPE STREQUAL "Debug") - string(REPLACE "/Zi" "/Z7" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}") - string(REPLACE "/Zi" "/Z7" CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}") - elseif(CMAKE_BUILD_TYPE STREQUAL "Release") - string(REPLACE "/Zi" "/Z7" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}") - string(REPLACE "/Zi" "/Z7" CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}") - endif() - set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT Embedded) - if(POLICY CMP0141) - cmake_policy(SET CMP0141 NEW) + elseif(CMAKE_HOST_WIN32) + find_program(SCCACHE_PROGRAM sccache) + if(SCCACHE_PROGRAM) + message(STATUS "Using SCCache") + set(CMAKE_C_COMPILER_LAUNCHER ${SCCACHE_PROGRAM}) + set(CMAKE_CXX_COMPILER_LAUNCHER ${SCCACHE_PROGRAM}) endif() endif() endif() +if(MSVC) + set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT Embedded) +endif() + if(CMAKE_CROSSCOMPILING AND ANDROID) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY BOTH) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE BOTH) set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE BOTH) endif() -set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE) -set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/$") -set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/$") +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/$/lib) +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/$) +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/$) # https://cmake.org/cmake/help/latest/policy/CMP0168.html#policy:CMP0168 if(POLICY CMP0168) @@ -146,9 +135,6 @@ if(CMAKE_CROSSCOMPILING AND NOT IS_DIRECTORY ${QT_HOST_PATH}) message(FATAL_ERROR "You need to set QT_HOST_PATH to cross compile Qt.") endif() -set(QT_SILENCE_MISSING_DEPENDENCY_TARGET_WARNING ON) -set(QT_MINIMUM_VERSION 6.8.1) - find_program(QMAKE_EXECUTABLE NAMES qmake HINTS ${QT_ROOT_DIR} ${QTDIR} ENV QTDIR PATH_SUFFIXES bin) execute_process(COMMAND ${QMAKE_EXECUTABLE} -query QT_VERSION OUTPUT_VARIABLE QT_VERSION) if(QT_VERSION LESS QT_MINIMUM_VERSION) @@ -156,10 +142,6 @@ if(QT_VERSION LESS QT_MINIMUM_VERSION) Installed version: ${QT_VERSION}") endif() -include(Qt6QGCConfiguration) - -set(QT_QML_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/qml" CACHE PATH "Install path for QML" FORCE) -set(QML_IMPORT_PATH ${CMAKE_SOURCE_DIR}/src ${CMAKE_SOURCE_DIR}/qml ${CMAKE_BINARY_DIR}/imports CACHE STRING "Extra QML Import Paths" FORCE) add_compile_definitions(QT_DISABLE_DEPRECATED_UP_TO=0x060800) if(CMAKE_BUILD_TYPE STREQUAL "Release") @@ -169,33 +151,11 @@ if(CMAKE_BUILD_TYPE STREQUAL "Release") QT_NO_DEBUG_OUTPUT ) elseif(CMAKE_BUILD_TYPE STREQUAL "Debug") - set(ENABLE_TESTING ON) - enable_testing() include(CTest) - - # set(QT_ENABLE_VERBOSE_DEPLOYMENT ON CACHE BOOL "Verbose Deployment") endif() if(ANDROID) - cmake_print_variables(QT_ANDROID_APPLICATION_ARGUMENTS QT_HOST_PATH) - - # set(QT_USE_TARGET_ANDROID_BUILD_DIR ON CACHE BOOL "Use Target Android Build Dir" FORCE) - - list(APPEND QT_ANDROID_MULTI_ABI_FORWARD_VARS QGC_STABLE_BUILD) - list(APPEND QT_ANDROID_MULTI_ABI_FORWARD_VARS QT_HOST_PATH) - cmake_print_variables(QT_ANDROID_MULTI_ABI_FORWARD_VARS) - # QT_ANDROID_DEPLOY_RELEASE - # set(QT_ANDROID_DEPLOYMENT_TYPE ON CACHE BOOL "Deployment Type") - cmake_dependent_option(QT_ANDROID_SIGN_APK "Enable Signing APK" ON "CMAKE_BUILD_TYPE STREQUAL Release" OFF) - if(QT_ANDROID_SIGN_AAB) - message(STATUS "Signing AAB") - endif() - if(QT_ANDROID_SIGN_APK) - message(STATUS "Signing APK") - endif() - # message(STATUS "QT_ANDROID_KEYSTORE_PATH $ENV{QT_ANDROID_KEYSTORE_PATH}") - # message(STATUS "QT_ANDROID_KEYSTORE_ALIAS $ENV{QT_ANDROID_KEYSTORE_ALIAS}") - # QT_ANDROID_KEYSTORE_STORE_PASS, QT_ANDROID_KEYSTORE_KEY_PASS + list(APPEND QT_ANDROID_MULTI_ABI_FORWARD_VARS QGC_STABLE_BUILD QT_HOST_PATH) endif() find_package(Qt6 @@ -239,8 +199,8 @@ if(LINUX) endif() qt_standard_project_setup( - REQUIRES ${QT_MINIMUM_VERSION} - SUPPORTS_UP_TO ${QT_MINIMUM_VERSION} + REQUIRES ${QGC_QT_MINIMUM_VERSION} + SUPPORTS_UP_TO ${QGC_QT_MAXIMUM_VERSION} I18N_SOURCE_LANGUAGE en ) @@ -256,45 +216,28 @@ qt_policy( # QGroundControl Options ####################################################### -if(NOT QGC_STABLE_BUILD) - add_compile_definitions(QGC_DAILY_BUILD) -endif() - -cmake_dependent_option(QGC_BUILD_TESTING "Enable testing" ON "CMAKE_BUILD_TYPE STREQUAL Debug" OFF) -if(QGC_BUILD_TESTING) - add_compile_definitions(QGC_UNITTEST_BUILD) -else() - set(BUILD_TESTING OFF CACHE INTERNAL "") -endif() - -# option(QGC_DISABLE_MAVLINK_INSPECTOR "Disable Mavlink Inspector" OFF) # This removes QtCharts which is GPL licensed - -cmake_dependent_option(QGC_DEBUG_QML "Build QGroundControl with QML debugging/profiling support." OFF "CMAKE_BUILD_TYPE STREQUAL Debug" OFF) -if(QGC_DEBUG_QML) - message(STATUS "To enable the QML debugger/profiler, run with: '-qmljsdebugger=port:1234'") - add_compile_definitions(QT_QML_DEBUG) -endif() - -if(QGC_DISABLE_APM_MAVLINK) - add_compile_definitions(QGC_NO_ARDUPILOT_DIALECT) -endif() +add_compile_definitions( + $<$>:QGC_DAILY_BUILD> + $<$:QGC_UNITTEST_BUILD> + $<$:QT_QML_DEBUG> + $<$:QGC_NO_ARDUPILOT_DIALECT> + $<$:QGC_VIEWER3D> +) -if(QGC_VIEWER3D) - add_compile_definitions(QGC_VIEWER3D) +if(NOT QGC_BUILD_TESTING) + set(BUILD_TESTING OFF CACHE INTERNAL "" FORCE) endif() if("${CMAKE_OSX_ARCHITECTURES}" MATCHES "arm64;x86_64" OR "${CMAKE_OSX_ARCHITECTURES}" MATCHES "x86_64;arm64") - set(MACOS_UNIVERSAL_BUILD ON CACHE INTERNAL "" FORCE) + set(MACOS_UNIVERSAL_BUILD ON) endif() # TODO: Force building dependencies if(NOT CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL CMAKE_SYSTEM_PROCESSOR)? # if(CMAKE_OSX_ARCHITECTURES AND NOT "${CMAKE_HOST_SYSTEM_PROCESSOR}" IN_LIST CMAKE_OSX_ARCHITECTURES) -cmake_dependent_option(QGC_BUILD_DEPENDENCIES "Force Building of Dependencies." OFF "NOT CMAKE_CROSSCOMPILING;NOT MACOS_UNIVERSAL_BUILD" ON) - include(CPM) if(CMAKE_CROSSCOMPILING OR ANDROID OR MACOS_UNIVERSAL_BUILD) - set(CPM_DOWNLOAD_ALL ON CACHE BOOL "Download all Dependencies" FORCE) + set(CPM_DOWNLOAD_ALL ON) endif() ####################################################### @@ -341,6 +284,8 @@ endif() ####################################################### qt_add_executable(${CMAKE_PROJECT_NAME} + WIN32 + MACOSX_BUNDLE src/main.cc ${QGC_RESOURCES} ) @@ -409,8 +354,8 @@ elseif(MACOS) set(MACOSX_BUNDLE_ICON_FILE "macx.icns") set(app_icon_macos "${QGC_MACOS_ICON_PATH}/macx.icns") set_source_files_properties(${app_icon_macos} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources") - target_sources(${PROJECT_NAME} PRIVATE ${app_icon_macos}) - set_target_properties(${PROJECT_NAME} + target_sources(${CMAKE_PROJECT_NAME} PRIVATE ${app_icon_macos}) + set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES MACOSX_BUNDLE TRUE MACOSX_BUNDLE_INFO_PLIST "${CMAKE_SOURCE_DIR}/deploy/macos/MacOSXBundleInfo.plist.in" @@ -446,7 +391,7 @@ elseif(IOS) ) # set(QT_NO_FFMPEG_XCODE_EMBED_FRAMEWORKS_CODE_SIGN_ON_COPY ON) - # qt_add_ios_ffmpeg_libraries(CMAKE_PROJECT_NAME) + qt_add_ios_ffmpeg_libraries(${CMAKE_PROJECT_NAME}) elseif(ANDROID) include(CPM) CPMAddPackage( @@ -498,8 +443,8 @@ target_link_libraries(${CMAKE_PROJECT_NAME} Qt6::Core Qt6::Core5Compat Qt6::Quick - Qt6::Widgets Qt6::Svg + Qt6::Widgets QGC QmlControls ) @@ -532,77 +477,6 @@ qt_import_plugins(${CMAKE_PROJECT_NAME} INCLUDE_BY_TYPE sqldrivers Qt6::QSQLiteDriverPlugin ) -####################################################### -# Install Configuration -####################################################### - -include(InstallRequiredSystemLibraries) - -install( - TARGETS ${CMAKE_PROJECT_NAME} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - BUNDLE DESTINATION . -) - -set(deploy_tool_options_arg "") -if(MACOS OR WIN32) - set(deploy_tool_options_arg "-qmldir=${CMAKE_SOURCE_DIR}") - if(MACOS_SIGNING_IDENTITY) - message(STATUS "Signing MacOS Bundle") - set(deploy_tool_options_arg "${deplay_tool_options_arg} -sign-for-notarization=${MACOS_SIGNING_IDENTITY}") - endif() -endif() - -qt_generate_deploy_qml_app_script( - TARGET ${CMAKE_PROJECT_NAME} - OUTPUT_SCRIPT deploy_script - DEPLOY_TOOL_OPTIONS ${deploy_tool_options_arg} - MACOS_BUNDLE_POST_BUILD - NO_UNSUPPORTED_PLATFORM_ERROR - DEPLOY_USER_QML_MODULES_ON_UNSUPPORTED_PLATFORM -) -install(SCRIPT ${deploy_script}) - -if(ANDROID) - # get_target_property(QGC_ANDROID_DEPLOY_FILE ${CMAKE_PROJECT_NAME} QT_ANDROID_DEPLOYMENT_SETTINGS_FILE) - # cmake_print_variables(QGC_ANDROID_DEPLOY_FILE) -elseif(LINUX) - configure_file( - ${CMAKE_SOURCE_DIR}/deploy/linux/org.mavlink.qgroundcontrol.desktop.in - ${CMAKE_BINARY_DIR}/org.mavlink.qgroundcontrol.desktop - @ONLY - ) - install( - FILES ${CMAKE_BINARY_DIR}/org.mavlink.qgroundcontrol.desktop - DESTINATION ${CMAKE_INSTALL_DATADIR}/applications - ) - install( - FILES ${QGC_APPIMAGE_ICON_PATH} - DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/hicolor/128x128/apps/ - RENAME org.mavlink.qgroundcontrol.png - ) - configure_file( - ${CMAKE_SOURCE_DIR}/deploy/linux/org.mavlink.qgroundcontrol.metainfo.xml.in - ${CMAKE_BINARY_DIR}/metainfo/org.mavlink.qgroundcontrol.metainfo.xml - @ONLY - ) - install( - FILES ${CMAKE_BINARY_DIR}/metainfo/org.mavlink.qgroundcontrol.metainfo.xml - DESTINATION ${CMAKE_INSTALL_DATADIR}/metainfo/ - ) - install( - FILES ${CMAKE_SOURCE_DIR}/deploy/linux/AppRun - DESTINATION ${CMAKE_BINARY_DIR} - ) - install(SCRIPT "${CMAKE_SOURCE_DIR}/cmake/CreateAppImage.cmake") -elseif(WIN32) - install(SCRIPT "${CMAKE_SOURCE_DIR}/cmake/CreateWinInstaller.cmake") -elseif(MACOS) - install(CODE "set(TARGET_APP_NAME ${QGC_APP_NAME})") - install(CODE "set(MACDEPLOYQT ${Qt6_DIR}/../../../bin/macdeployqt)") - install(SCRIPT "${CMAKE_SOURCE_DIR}/cmake/CreateMacDMG.cmake") -endif() +include(Install) -include(printSummary) +include(PrintSummary) diff --git a/cmake/CustomOptions.cmake b/cmake/CustomOptions.cmake index 805f9cac208..b32966b9888 100644 --- a/cmake/CustomOptions.cmake +++ b/cmake/CustomOptions.cmake @@ -1,35 +1,59 @@ +include(CMakeDependentOption) # The following options can be overriden by custom builds using the CustomOverrides.cmake file -# General +# App set(QGC_APP_NAME "QGroundControl" CACHE STRING "App Name") set(QGC_APP_COPYRIGHT "Copyright (c) 2024 QGroundControl. All rights reserved." CACHE STRING "Copyright") set(QGC_APP_DESCRIPTION "Open Source Ground Control App" CACHE STRING "Description") set(QGC_ORG_NAME "QGroundControl.org" CACHE STRING "Org Name") set(QGC_ORG_DOMAIN "org.qgroundcontrol" CACHE STRING "Domain") +set(QGC_SETTINGS_VERSION "9" CACHE STRING "Settings Version") # If you need to make an incompatible changes to stored settings, bump this version number up by 1. This will caused store settings to be cleared on next boot. +# Build +option(BUILD_SHARED_LIBS "Build using shared libraries" OFF) option(QGC_STABLE_BUILD "Stable Build" OFF) -option(QGC_DOWNLOAD_DEPENDENCIES "Download Dependencies if Possible" ON) +option(QGC_USE_CACHE "Use Build Caching" ON) +cmake_dependent_option(QGC_BUILD_TESTING "Enable testing" ON "CMAKE_BUILD_TYPE STREQUAL Debug" OFF) +cmake_dependent_option(QGC_DEBUG_QML "Build QGroundControl with QML debugging/profiling support." OFF "CMAKE_BUILD_TYPE STREQUAL Debug" OFF) +# Features +option(QGC_UTM_ADAPTER "Enable UTM Adapter" OFF) +option(QGC_VIEWER3D "Enable Viewer3D" ON) # Qt6Quick3D_FOUND +# option(QGC_DISABLE_MAVLINK_INSPECTOR "Disable Mavlink Inspector" OFF) # This removes QtCharts which is GPL licensed + +# Comms option(QGC_ENABLE_BLUETOOTH "Enable Bluetooth Links" ON) # Qt6Bluetooth_FOUND option(QGC_ZEROCONF_ENABLED "Enable ZeroConf Compatibility" OFF) option(QGC_AIRLINK_DISABLED "Disable AIRLink" ON) option(QGC_NO_SERIAL_LINK "Disable Serial Links" OFF) # NOT IOS AND Qt6SerialPort_FOUND -option(QGC_UTM_ADAPTER "Enable UTM Adapter" OFF) -option(QGC_VIEWER3D "Enable Viewer3D" ON) # Qt6Quick3D_FOUND - +# Video option(QGC_ENABLE_UVC "Enable UVC Devices" ON) # Qt6Multimedia_FOUND option(QGC_ENABLE_GST_VIDEOSTREAMING "Enable GStreamer Video Backend" ON) option(QGC_ENABLE_QT_VIDEOSTREAMING "Enable QtMultimedia Video Backend" OFF) # Qt6Multimedia_FOUND +# MAVLink set(QGC_MAVLINK_GIT_REPO "https://github.com/mavlink/c_library_v2.git" CACHE STRING "URL to MAVLink Git Repo") set(QGC_MAVLINK_GIT_TAG "b71f061a53941637cbcfc5bcf860f96bc82e0892" CACHE STRING "Tag of MAVLink Git Repo") +# APM +option(QGC_DISABLE_APM_MAVLINK "Disable APM Dialect" OFF) +option(QGC_DISABLE_APM_PLUGIN "Disable APM Plugin" OFF) +option(QGC_DISABLE_APM_PLUGIN_FACTORY "Disable APM Plugin Factory" OFF) + +# PX4 +option(QGC_DISABLE_PX4_PLUGIN "Disable PX4 Plugin" OFF) +option(QGC_DISABLE_PX4_PLUGIN_FACTORY "Disable PX4 Plugin Factory" OFF) + # Android set(QGC_QT_ANDROID_MIN_SDK_VERSION "28" CACHE STRING "Android Min SDK Version") set(QGC_QT_ANDROID_TARGET_SDK_VERSION "35" CACHE STRING "Android Target SDK Version") set(QGC_ANDROID_PACKAGE_NAME "org.mavlink.qgroundcontrol" CACHE STRING "Android Package Name") set(QGC_ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_SOURCE_DIR}/android" CACHE PATH "Android Package Path") +set(QT_ANDROID_DEPLOYMENT_TYPE "" CACHE STRING "Forces Signing if Set to Release") +option(QT_ANDROID_SIGN_APK "Enable Signing APK" OFF) +option(QT_ANDROID_SIGN_AAB "Enable Signing AAB" OFF) +option(QT_USE_TARGET_ANDROID_BUILD_DIR "Use Target Android Build Dir" OFF) # MacOS set(QGC_BUNDLE_ID "org.qgroundcontrol.QGroundControl" CACHE STRING "MacOS Bundle ID") # MACOS @@ -42,17 +66,14 @@ set(QGC_APPIMAGE_ICON_PATH "${CMAKE_SOURCE_DIR}/resources/icons/qgroundcontrol.p set(QGC_WINDOWS_INSTALL_HEADER_PATH "${CMAKE_SOURCE_DIR}/deploy/windows/installheader.bmp" CACHE FILEPATH "Windows Install Header Path") set(QGC_WINDOWS_ICON_PATH "${CMAKE_SOURCE_DIR}/deploy/windows/WindowsQGC.ico" CACHE FILEPATH "Windows Icon Path") -# APM -option(QGC_DISABLE_APM_MAVLINK "Disable APM Dialect" OFF) -option(QGC_DISABLE_APM_PLUGIN "Disable APM Plugin" OFF) -option(QGC_DISABLE_APM_PLUGIN_FACTORY "Disable APM Plugin Factory" OFF) - -# PX4 -option(QGC_DISABLE_PX4_PLUGIN "Disable PX4 Plugin" OFF) -option(QGC_DISABLE_PX4_PLUGIN_FACTORY "Disable PX4 Plugin Factory" OFF) - -# If you need to make an incompatible changes to stored settings, bump this version number -# up by 1. This will caused store settings to be cleared on next boot. -set(QGC_SETTINGS_VERSION "9" CACHE STRING "Settings Version") - +# CPM set(CPM_SOURCE_CACHE ${CMAKE_BINARY_DIR}/cpm_modules CACHE PATH "Directory to download CPM dependencies") + +# Qt +set(QGC_QT_MINIMUM_VERSION "6.8.1" CACHE STRING "Minimum Supported Qt Version") +set(QGC_QT_MAXIMUM_VERSION "6.8.2" CACHE STRING "Maximum Supported Qt Version") +set(QT_QML_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/qml" CACHE PATH "Install path for QML") +set(QML_IMPORT_PATH "${QT_QML_OUTPUT_DIRECTORY}" CACHE STRING "Extra QML Import Paths") +option(QML_IMPORT_TRACE "Debug QML Imports" OFF) +option(QT_SILENCE_MISSING_DEPENDENCY_TARGET_WARNING "Silence Missing Dependency Warnings" OFF) +option(QT_ENABLE_VERBOSE_DEPLOYMENT "Verbose Deployment" OFF) diff --git a/cmake/Install.cmake b/cmake/Install.cmake new file mode 100644 index 00000000000..49a841e44c0 --- /dev/null +++ b/cmake/Install.cmake @@ -0,0 +1,68 @@ +include(InstallRequiredSystemLibraries) + +install( + TARGETS ${CMAKE_PROJECT_NAME} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + BUNDLE DESTINATION . +) + +set(deploy_tool_options_arg "") +if(MACOS OR WIN32) + set(deploy_tool_options_arg "-qmldir=${CMAKE_SOURCE_DIR}") + if(MACOS_SIGNING_IDENTITY) + message(STATUS "Signing MacOS Bundle") + set(deploy_tool_options_arg "${deplay_tool_options_arg} -sign-for-notarization=${MACOS_SIGNING_IDENTITY}") + endif() +endif() + +qt_generate_deploy_qml_app_script( + TARGET ${CMAKE_PROJECT_NAME} + OUTPUT_SCRIPT deploy_script + DEPLOY_TOOL_OPTIONS ${deploy_tool_options_arg} + MACOS_BUNDLE_POST_BUILD + NO_UNSUPPORTED_PLATFORM_ERROR + DEPLOY_USER_QML_MODULES_ON_UNSUPPORTED_PLATFORM +) +install(SCRIPT ${deploy_script}) + +if(ANDROID) + # get_target_property(QGC_ANDROID_DEPLOY_FILE ${CMAKE_PROJECT_NAME} QT_ANDROID_DEPLOYMENT_SETTINGS_FILE) + # cmake_print_variables(QGC_ANDROID_DEPLOY_FILE) +elseif(LINUX) + configure_file( + ${CMAKE_SOURCE_DIR}/deploy/linux/org.mavlink.qgroundcontrol.desktop.in + ${CMAKE_BINARY_DIR}/org.mavlink.qgroundcontrol.desktop + @ONLY + ) + install( + FILES ${CMAKE_BINARY_DIR}/org.mavlink.qgroundcontrol.desktop + DESTINATION ${CMAKE_INSTALL_DATADIR}/applications + ) + install( + FILES ${QGC_APPIMAGE_ICON_PATH} + DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/hicolor/128x128/apps/ + RENAME org.mavlink.qgroundcontrol.png + ) + configure_file( + ${CMAKE_SOURCE_DIR}/deploy/linux/org.mavlink.qgroundcontrol.metainfo.xml.in + ${CMAKE_BINARY_DIR}/metainfo/org.mavlink.qgroundcontrol.metainfo.xml + @ONLY + ) + install( + FILES ${CMAKE_BINARY_DIR}/metainfo/org.mavlink.qgroundcontrol.metainfo.xml + DESTINATION ${CMAKE_INSTALL_DATADIR}/metainfo/ + ) + install( + FILES ${CMAKE_SOURCE_DIR}/deploy/linux/AppRun + DESTINATION ${CMAKE_BINARY_DIR} + ) + install(SCRIPT "${CMAKE_SOURCE_DIR}/cmake/CreateAppImage.cmake") +elseif(WIN32) + install(SCRIPT "${CMAKE_SOURCE_DIR}/cmake/CreateWinInstaller.cmake") +elseif(MACOS) + install(CODE "set(TARGET_APP_NAME ${QGC_APP_NAME})") + install(CODE "set(MACDEPLOYQT ${Qt6_DIR}/../../../bin/macdeployqt)") + install(SCRIPT "${CMAKE_SOURCE_DIR}/cmake/CreateMacDMG.cmake") +endif() diff --git a/cmake/printSummary.cmake b/cmake/PrintSummary.cmake similarity index 90% rename from cmake/printSummary.cmake rename to cmake/PrintSummary.cmake index 3dda683517a..13c0850007e 100644 --- a/cmake/printSummary.cmake +++ b/cmake/PrintSummary.cmake @@ -74,7 +74,6 @@ endif() OptionOutput( "Stable Build: " QGC_STABLE_BUILD ) OptionOutput( "Building Tests: " QGC_BUILD_TESTING AND BUILD_TESTING ) OptionOutput( "Debug QML: " QGC_DEBUG_QML ) -OptionOutput( "Build Dependencies: " QGC_BUILD_DEPENDENCIES ) OptionOutput( "Disable APM Dialect: " QGC_DISABLE_APM_MAVLINK ) OptionOutput( "Disable APM Plugin: " QGC_DISABLE_APM_PLUGIN ) OptionOutput( "Disable APM Plugin Factory: " QGC_DISABLE_APM_PLUGIN_FACTORY ) @@ -94,3 +93,20 @@ message( STATUS "MAVLink Git Tag: ${QGC_MAVLINK_GIT_TAG}" ) message( STATUS "" ) message( STATUS "------------------------------------------------------------------" ) message( STATUS "" ) + +# QT_ANDROID_MULTI_ABI_FORWARD_VARS +# QT_ANDROID_APPLICATION_ARGUMENTS +# QT_HOST_PATH +# QT_ANDROID_SIGN_AAB +# QT_ANDROID_SIGN_APK +# message(STATUS "QT_ANDROID_KEYSTORE_PATH $ENV{QT_ANDROID_KEYSTORE_PATH}") +# message(STATUS "QT_ANDROID_KEYSTORE_ALIAS $ENV{QT_ANDROID_KEYSTORE_ALIAS}") +# QT_ANDROID_KEYSTORE_STORE_PASS, QT_ANDROID_KEYSTORE_KEY_PASS +# QT_ANDROID_DEPLOY_RELEASE +# QT_USE_TARGET_ANDROID_BUILD_DIR +# QT_ANDROID_DEPLOYMENT_TYPE +# QT_ENABLE_VERBOSE_DEPLOYMENT + +# QGC_QT_MINIMUM_VERSION +# QGC_QT_MAXIMUM_VERSION +# QT_SILENCE_MISSING_DEPENDENCY_TARGET_WARNING diff --git a/cmake/Qt6QGCConfiguration.cmake b/cmake/Qt6QGCConfiguration.cmake deleted file mode 100644 index 6c9332dafa8..00000000000 --- a/cmake/Qt6QGCConfiguration.cmake +++ /dev/null @@ -1,61 +0,0 @@ -if(DEFINED ENV{QT_VERSION}) - set(QT_VERSION $ENV{QT_VERSION}) -endif() - -if(NOT QT_VERSION) - # if QT version not specified then use any available version - file(GLOB FOUND_QT_VERSIONS - LIST_DIRECTORIES true - $ENV{HOME}/Qt/6.8.* - ) - if(NOT FOUND_QT_VERSIONS) - return() - endif() - list(GET FOUND_QT_VERSIONS 0 QT_VERSION_PATH) - get_filename_component(QT_VERSION ${QT_VERSION_PATH} NAME) -endif() - -if(DEFINED ENV{QT_MKSPEC}) - set(QT_MKSPEC $ENV{QT_MKSPEC}) -endif() - -if(NOT QT_MKSPEC) - if(APPLE) - set(QT_MKSPEC clang_64) - elseif(LINUX) - set(QT_MKSPEC gcc_64) - elseif(WIN32) - set(QT_MKSPEC msvc2022_64) - elseif(ANDROID) - if(${ANDROID_ABI} STREQUAL armeabi-v7a) - set(QT_MKSPEC android_armv7) - elseif(${ANDROID_ABI} STREQUAL arm64-v8a) - set(QT_MKSPEC android_arm64_v8a) - elseif(${ANDROID_ABI} STREQUAL x86) - set(QT_MKSPEC android_x86) - elseif(${ANDROID_ABI} STREQUAL x86_64) - set(QT_MKSPEC android_x86_64) - endif() - endif() -endif() - -set(QT_LIBRARY_HINTS - $ENV{QT_PATH}/${QT_VERSION}/${QT_MKSPEC} - ${Qt6_DIR} -) - -if(ANDROID) - list(APPEND QT_LIBRARY_HINTS ${QT_HOST_PATH}/lib/cmake) -elseif(WIN32) - list(APPEND QT_LIBRARY_HINTS C:/Qt/${QT_VERSION}/${QT_MKSPEC}) -elseif(LINUX) - list(APPEND QT_LIBRARY_HINTS $ENV{HOME}/Qt/${QT_VERSION}/${QT_MKSPEC}) -endif() - -include(CMakePrintHelpers) -cmake_print_variables(QT_VERSION QT_MKSPEC QT_LIBRARY_HINTS) - -# if(ANDROID) - # set(ENV{PKG_CONFIG_SYSROOT_DIR} ${CMAKE_SYSROOT}) - # message(STATUS "PKG_CONFIG_SYSROOT_DIR $ENV{PKG_CONFIG_SYSROOT_DIR}") -# endif() diff --git a/custom-example/CMakeLists.txt b/custom-example/CMakeLists.txt index 7f2e467ad67..c2338b88b7b 100644 --- a/custom-example/CMakeLists.txt +++ b/custom-example/CMakeLists.txt @@ -23,7 +23,7 @@ if(ANDROID) "${DEFAULT_ANDROID_DIR}/" "${CUSTOM_ANDROID_DIR}/" ) - set(QGC_ANDROID_PACKAGE_SOURCE_DIR "${FINAL_ANDROID_DIR}" CACHE STRING "Path to a custom Android package template" FORCE) + set(QGC_ANDROID_PACKAGE_SOURCE_DIR "${FINAL_ANDROID_DIR}" CACHE PATH "Path to a custom Android package template" FORCE) message(STATUS "Android package template path will be set to: ${QGC_ANDROID_PACKAGE_SOURCE_DIR}") else() message(STATUS "Custom Android package template empty. Using default.") @@ -54,9 +54,9 @@ list(APPEND CUSTOM_RESOURCES ${CMAKE_CURRENT_SOURCE_DIR}/qgroundcontrol.qrc ${CMAKE_CURRENT_SOURCE_DIR}/custom.qrc ) -set(QGC_RESOURCES ${CUSTOM_RESOURCES} PARENT_SCOPE) +set(QGC_RESOURCES ${QGC_RESOURCES} ${CUSTOM_RESOURCES} CACHE STRING "Paths to .qrc Resources" FORCE) -set(QML_IMPORT_PATH "${CMAKE_CURRENT_SOURCE_DIR}/res" CACHE STRING "Extra qml import paths" PARENT_SCOPE) +set(QML_IMPORT_PATH ${QML_IMPORT_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/res" CACHE STRING "Extra qml import paths" FORCE) qt_add_library(CustomPlugin STATIC src/CustomPlugin.cc diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index ee1d75a6875..dea58864038 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -4,9 +4,6 @@ endif() find_package(Qt6 REQUIRED COMPONENTS Core Test) -include(CTest) -enable_testing() - # if(ANDROID) # include(AndroidTestUtilities) # endif() From 7f406f1d41614ca38f683cf167558372eb1e3a6e Mon Sep 17 00:00:00 2001 From: Holden Date: Wed, 12 Feb 2025 02:42:32 -0500 Subject: [PATCH 09/10] Qt: Update to 6.8.2 --- .github/actions/qt-android/action.yml | 2 +- .github/workflows/android-linux.yml | 2 +- .github/workflows/android-macos.yml | 2 +- .github/workflows/android-windows.yml | 2 +- .github/workflows/custom.yml | 2 +- .github/workflows/ios.yml | 2 +- .github/workflows/linux.yml | 2 +- .github/workflows/macos.yml | 2 +- .github/workflows/windows.yml | 2 +- deploy/docker/Dockerfile-build-macos | 2 +- deploy/docker/Dockerfile-build-ubuntu | 2 +- deploy/linux/appimagecraft.yml | 2 +- deploy/vagrant/.vagrantconfig.yml | 8 ++++---- docs/en/qgc-dev-guide/getting_started/index.md | 2 +- tools/setup/install-qt-debian.sh | 2 +- translations/qgc-lupdate.sh | 2 +- 16 files changed, 19 insertions(+), 19 deletions(-) diff --git a/.github/actions/qt-android/action.yml b/.github/actions/qt-android/action.yml index efd2dfa8d6d..3ee5810a8bc 100644 --- a/.github/actions/qt-android/action.yml +++ b/.github/actions/qt-android/action.yml @@ -10,7 +10,7 @@ inputs: version: description: Qt Version required: false - default: 6.8.1 + default: 6.8.2 abis: description: ABIs to Build required: false diff --git a/.github/workflows/android-linux.yml b/.github/workflows/android-linux.yml index d50703d2533..37ee1360caf 100644 --- a/.github/workflows/android-linux.yml +++ b/.github/workflows/android-linux.yml @@ -35,7 +35,7 @@ jobs: env: ARTIFACT: QGroundControl.apk PACKAGE: QGroundControl - QT_VERSION: 6.8.1 + QT_VERSION: 6.8.2 GST_VERSION: 1.22.12 QT_ANDROID_KEYSTORE_PATH: ${{ github.workspace }}/deploy/android/android_release.keystore QT_ANDROID_KEYSTORE_ALIAS: QGCAndroidKeyStore diff --git a/.github/workflows/android-macos.yml b/.github/workflows/android-macos.yml index ec8d6d77f20..e62673a1273 100644 --- a/.github/workflows/android-macos.yml +++ b/.github/workflows/android-macos.yml @@ -34,7 +34,7 @@ jobs: env: ARTIFACT: QGroundControl.apk PACKAGE: QGroundControl - QT_VERSION: 6.8.1 + QT_VERSION: 6.8.2 GST_VERSION: 1.22.12 QT_ANDROID_KEYSTORE_PATH: ${{ github.workspace }}/deploy/android/android_release.keystore QT_ANDROID_KEYSTORE_ALIAS: QGCAndroidKeyStore diff --git a/.github/workflows/android-windows.yml b/.github/workflows/android-windows.yml index fb5b223b344..bdb394eac68 100644 --- a/.github/workflows/android-windows.yml +++ b/.github/workflows/android-windows.yml @@ -35,7 +35,7 @@ jobs: env: ARTIFACT: QGroundControl.apk PACKAGE: QGroundControl - QT_VERSION: 6.8.1 + QT_VERSION: 6.8.2 GST_VERSION: 1.22.12 QT_ANDROID_KEYSTORE_PATH: ${{ github.workspace }}/deploy/android/android_release.keystore QT_ANDROID_KEYSTORE_ALIAS: QGCAndroidKeyStore diff --git a/.github/workflows/custom.yml b/.github/workflows/custom.yml index d9fade3be0f..1f937ce653f 100644 --- a/.github/workflows/custom.yml +++ b/.github/workflows/custom.yml @@ -35,7 +35,7 @@ jobs: env: ARTIFACT: QGroundControl-installer.exe - QT_VERSION: 6.8.1 + QT_VERSION: 6.8.2 GST_VERSION: 1.22.12 steps: diff --git a/.github/workflows/ios.yml b/.github/workflows/ios.yml index 75b489a078c..0c10765fa60 100644 --- a/.github/workflows/ios.yml +++ b/.github/workflows/ios.yml @@ -22,7 +22,7 @@ jobs: env: ARTIFACT: QGroundControl.app PACKAGE: QGroundControl - QT_VERSION: 6.8.1 + QT_VERSION: 6.8.2 GST_VERSION: 1.22.12 steps: diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index ac627c6e829..362237eb211 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -36,7 +36,7 @@ jobs: env: ARTIFACT: QGroundControl-x86_64.AppImage PACKAGE: QGroundControl-x86_64 - QT_VERSION: 6.8.1 + QT_VERSION: 6.8.2 GST_VERSION: 1.22.12 steps: diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index f396c65d787..e75a937a054 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -34,7 +34,7 @@ jobs: env: ARTIFACT: QGroundControl.dmg PACKAGE: QGroundControl - QT_VERSION: 6.8.1 + QT_VERSION: 6.8.2 steps: - name: Checkout repo diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 12f0d7fa386..0fc00e48822 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -35,7 +35,7 @@ jobs: env: ARTIFACT: QGroundControl-installer.exe PACKAGE: QGroundControl-installer - QT_VERSION: 6.8.1 + QT_VERSION: 6.8.2 GST_VERSION: 1.22.12 steps: diff --git a/deploy/docker/Dockerfile-build-macos b/deploy/docker/Dockerfile-build-macos index 31d269656c2..9e1630f7c3b 100644 --- a/deploy/docker/Dockerfile-build-macos +++ b/deploy/docker/Dockerfile-build-macos @@ -2,7 +2,7 @@ FROM sickcodes/docker-osx:latest # Set environment variables -ENV QT_VERSION=6.8.1 +ENV QT_VERSION=6.8.2 ENV QT_PATH=/opt/Qt ENV QT_DESKTOP=$QT_PATH/${QT_VERSION}/clang_64 diff --git a/deploy/docker/Dockerfile-build-ubuntu b/deploy/docker/Dockerfile-build-ubuntu index 76343d28684..cdacc0dcb6a 100644 --- a/deploy/docker/Dockerfile-build-ubuntu +++ b/deploy/docker/Dockerfile-build-ubuntu @@ -1,6 +1,6 @@ FROM ubuntu:22.04 -ARG QT_VERSION=6.8.1 +ARG QT_VERSION=6.8.2 ARG QT_MODULES="qtcharts qtlocation qtpositioning qtspeech qt5compat qtmultimedia qtserialport qtimageformats qtshadertools qtconnectivity qtquick3d qtsensors" ENV DEBIAN_FRONTEND noninteractive diff --git a/deploy/linux/appimagecraft.yml b/deploy/linux/appimagecraft.yml index 98b29b3f475..2e68d07e692 100644 --- a/deploy/linux/appimagecraft.yml +++ b/deploy/linux/appimagecraft.yml @@ -8,7 +8,7 @@ build: cmake: source_dir: src/ extra_variables: - - Qt6_ROOT=/home/runner/work/_temp/Qt/6.8.1/gcc_64 + - Qt6_ROOT=/home/runner/work/_temp/Qt/6.8.2/gcc_64 environment: BUILD_TYPE: Release diff --git a/deploy/vagrant/.vagrantconfig.yml b/deploy/vagrant/.vagrantconfig.yml index 594b46c6ed3..49fd0a860a9 100644 --- a/deploy/vagrant/.vagrantconfig.yml +++ b/deploy/vagrant/.vagrantconfig.yml @@ -3,10 +3,10 @@ configs: 'qt_deps_unpack_parent_dir': '/home/vagrant' 'qt_deps_unpack_dir': '/home/vagrant/Qt' - 'qt_deps_bin_unpack_dir': '/home/vagrant/Qt/6.8.1/gcc_64/bin' - 'qt_deps_lib_unpack_dir': '/home/vagrant/Qt/6.8.1/gcc_64/lib' - 'qt_deps_plugins_unpack_dir': '/home/vagrant/Qt/6.8.1/gcc_64/plugins' - 'qt_deps_qml_unpack_dir': '/home/vagrant/Qt/6.8.1/gcc_64/qml' + 'qt_deps_bin_unpack_dir': '/home/vagrant/Qt/6.8.2/gcc_64/bin' + 'qt_deps_lib_unpack_dir': '/home/vagrant/Qt/6.8.2/gcc_64/lib' + 'qt_deps_plugins_unpack_dir': '/home/vagrant/Qt/6.8.2/gcc_64/plugins' + 'qt_deps_qml_unpack_dir': '/home/vagrant/Qt/6.8.2/gcc_64/qml' 'project_root_dir': '/vagrant' diff --git a/docs/en/qgc-dev-guide/getting_started/index.md b/docs/en/qgc-dev-guide/getting_started/index.md index d945939e770..6df60f0f8b0 100644 --- a/docs/en/qgc-dev-guide/getting_started/index.md +++ b/docs/en/qgc-dev-guide/getting_started/index.md @@ -1,5 +1,5 @@ --- -qt_version: 6.8.1 +qt_version: 6.8.2 --- # Getting Started with Source and Builds diff --git a/tools/setup/install-qt-debian.sh b/tools/setup/install-qt-debian.sh index 52bfc044864..705b705288c 100755 --- a/tools/setup/install-qt-debian.sh +++ b/tools/setup/install-qt-debian.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -QT_VERSION="${QT_VERSION:-6.8.1}" +QT_VERSION="${QT_VERSION:-6.8.2}" QT_PATH="${QT_PATH:-/opt/Qt}" QT_HOST="${QT_HOST:-linux}" QT_TARGET="${QT_TARGET:-desktop}" diff --git a/translations/qgc-lupdate.sh b/translations/qgc-lupdate.sh index 9bb933b3604..0278606615c 100755 --- a/translations/qgc-lupdate.sh +++ b/translations/qgc-lupdate.sh @@ -1,5 +1,5 @@ #!/bin/bash # This script will update both the Qt and Json string translation files. -QT_PATH=~/Qt/6.8.1/*/bin +QT_PATH=~/Qt/6.8.2/*/bin $QT_PATH/lupdate ../src -ts qgc.ts -no-obsolete python3 qgc-lupdate-json.py From c037eb6a1f363e99cf8a5a004ae3382c3837c623 Mon Sep 17 00:00:00 2001 From: Holden Date: Wed, 12 Feb 2025 03:28:59 -0500 Subject: [PATCH 10/10] CI: Move Optional Source Checks to Actions --- .github/actions/checks/action.yml | 24 ++++++++++++++++++++++++ .github/workflows/clang-format-check.yml | 18 ------------------ .github/workflows/spelling.yml | 11 ----------- 3 files changed, 24 insertions(+), 29 deletions(-) create mode 100644 .github/actions/checks/action.yml delete mode 100644 .github/workflows/clang-format-check.yml delete mode 100644 .github/workflows/spelling.yml diff --git a/.github/actions/checks/action.yml b/.github/actions/checks/action.yml new file mode 100644 index 00000000000..bf75189c347 --- /dev/null +++ b/.github/actions/checks/action.yml @@ -0,0 +1,24 @@ +name: Source Checks +description: Run Various Checks on Source +inputs: + format: + description: Run Clang Format + default: 'false' + spelling: + description: Run Spelling + default: 'false' +runs: + using: "composite" + steps: + - uses: actions/checkout@v4 + + - name: Run clang-format style check for C++ Source Files. + if: inputs.format == 'true' + uses: jidicula/clang-format-action@main + with: + clang-format-version: '17' + check-path: 'src' + + - name: Check spelling + if: inputs.spelling == 'true' + uses: crate-ci/typos@master diff --git a/.github/workflows/clang-format-check.yml b/.github/workflows/clang-format-check.yml deleted file mode 100644 index dbb962b4fa3..00000000000 --- a/.github/workflows/clang-format-check.yml +++ /dev/null @@ -1,18 +0,0 @@ -name: clang-format Check -on: [workflow_dispatch] -jobs: - formatting-check: - name: Formatting Check - runs-on: ubuntu-latest - strategy: - matrix: - path: - - 'src' - - 'test' - steps: - - uses: actions/checkout@v4 - - name: Run clang-format style check for C++ Source Files. - uses: jidicula/clang-format-action@main - with: - clang-format-version: '17' - check-path: ${{ matrix.path }} diff --git a/.github/workflows/spelling.yml b/.github/workflows/spelling.yml deleted file mode 100644 index 50220d543d5..00000000000 --- a/.github/workflows/spelling.yml +++ /dev/null @@ -1,11 +0,0 @@ -name: Typos -on: [workflow_dispatch] -jobs: - typos: - name: Spell Check with Typos - runs-on: ubuntu-latest - steps: - - name: Checkout Actions Repository - uses: actions/checkout@v4 - - name: Check spelling - uses: crate-ci/typos@master