CMake: Cleanup CMakeLists
This commit is contained in:
committed by
Holden Ramsey
parent
7aa8b7dcfc
commit
0c8dddc0be
@@ -14,6 +14,7 @@ on:
|
||||
- 'src/**'
|
||||
- 'android/**'
|
||||
- 'CMakeLists.txt'
|
||||
- 'cmake/**'
|
||||
|
||||
# concurrency:
|
||||
# group: ${{ github.workflow }}-${{ github.ref }}
|
||||
|
||||
@@ -14,6 +14,7 @@ on:
|
||||
- 'src/**'
|
||||
- 'android/**'
|
||||
- 'CMakeLists.txt'
|
||||
- 'cmake/**'
|
||||
|
||||
# concurrency:
|
||||
# group: ${{ github.workflow }}-${{ github.ref }}
|
||||
|
||||
@@ -14,6 +14,7 @@ on:
|
||||
- 'src/**'
|
||||
- 'custom-example/**'
|
||||
- 'CMakeLists.txt'
|
||||
- 'cmake/**'
|
||||
|
||||
# concurrency:
|
||||
# group: ${{ github.workflow }}-${{ github.ref }}
|
||||
|
||||
@@ -14,6 +14,7 @@ on:
|
||||
- 'deploy/linux/**'
|
||||
- 'src/**'
|
||||
- 'CMakeLists.txt'
|
||||
- 'cmake/**'
|
||||
|
||||
# concurrency:
|
||||
# group: ${{ github.workflow }}-${{ github.ref }}
|
||||
|
||||
@@ -14,6 +14,7 @@ on:
|
||||
- 'src/**'
|
||||
- 'test/**'
|
||||
- 'CMakeLists.txt'
|
||||
- 'cmake/**'
|
||||
|
||||
# concurrency:
|
||||
# group: ${{ github.workflow }}-${{ github.ref }}
|
||||
|
||||
@@ -13,6 +13,7 @@ on:
|
||||
- 'deploy/macos/**'
|
||||
- 'src/**'
|
||||
- 'CMakeLists.txt'
|
||||
- 'cmake/**'
|
||||
|
||||
# concurrency:
|
||||
# group: ${{ github.workflow }}-${{ github.ref }}
|
||||
|
||||
@@ -13,6 +13,7 @@ on:
|
||||
- 'deploy/windows/**'
|
||||
- 'src/**'
|
||||
- 'CMakeLists.txt'
|
||||
- 'cmake/**'
|
||||
|
||||
# concurrency:
|
||||
# group: ${{ github.workflow }}-${{ github.ref }}
|
||||
|
||||
+59
-185
@@ -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,52 +64,41 @@ 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")
|
||||
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(LINUX)
|
||||
set(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR}/AppDir/usr)
|
||||
else()
|
||||
set(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR}/staging)
|
||||
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()
|
||||
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(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()
|
||||
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)
|
||||
endif()
|
||||
endif()
|
||||
if(MSVC)
|
||||
set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT Embedded)
|
||||
endif()
|
||||
|
||||
if(CMAKE_CROSSCOMPILING AND ANDROID)
|
||||
@@ -118,9 +107,9 @@ if(CMAKE_CROSSCOMPILING AND ANDROID)
|
||||
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}/$<CONFIGURATION>")
|
||||
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/$<CONFIGURATION>")
|
||||
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/$<CONFIGURATION>/lib)
|
||||
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/$<CONFIGURATION>)
|
||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/$<CONFIGURATION>)
|
||||
|
||||
# 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()
|
||||
add_compile_definitions(
|
||||
$<$<NOT:$<BOOL:${QGC_STABLE_BUILD}>>:QGC_DAILY_BUILD>
|
||||
$<$<BOOL:${QGC_BUILD_TESTING}>:QGC_UNITTEST_BUILD>
|
||||
$<$<BOOL:${QGC_DEBUG_QML}>:QT_QML_DEBUG>
|
||||
$<$<BOOL:${QGC_DISABLE_APM_MAVLINK}>:QGC_NO_ARDUPILOT_DIALECT>
|
||||
$<$<BOOL:${QGC_VIEWER3D}>:QGC_VIEWER3D>
|
||||
)
|
||||
|
||||
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()
|
||||
|
||||
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(Install)
|
||||
|
||||
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(printSummary)
|
||||
include(PrintSummary)
|
||||
|
||||
+39
-18
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
@@ -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
|
||||
@@ -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()
|
||||
@@ -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
|
||||
|
||||
@@ -4,9 +4,6 @@ endif()
|
||||
|
||||
find_package(Qt6 REQUIRED COMPONENTS Core Test)
|
||||
|
||||
include(CTest)
|
||||
enable_testing()
|
||||
|
||||
# if(ANDROID)
|
||||
# include(AndroidTestUtilities)
|
||||
# endif()
|
||||
|
||||
Reference in New Issue
Block a user