加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
CMakeLists.txt 4.60 KB
一键复制 编辑 原始数据 按行查看 历史
dagar 提交于 2020-10-18 11:57 . cmake updates
cmake_minimum_required(VERSION 3.10)
project(QGroundControl LANGUAGES C CXX)
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug;Release;RelWithDebInfo;MinSizeRel;Coverage")
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
include(FeatureSummary)
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
add_compile_options(-Wall -Wextra)
endif()
# 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()
# Add folder where are supportive functions
list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)
# Configure Qt5 to get necessary variables
include(Qt5QGCConfiguration)
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")
add_definitions(
-DQGC_APPLICATION_NAME="QGroundControl"
-DQGC_ORG_NAME="QGroundControl.org"
-DQGC_ORG_DOMAIN="org.qgroundcontrol"
)
include(Git)
message(STATUS "QGroundControl version: ${GIT_VERSION}")
#=============================================================================
# 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()
#=============================================================================
# Compile QML
#
option(COMPILE_QML "Pre-compile QML files using the Qt Quick compiler." FALSE)
add_feature_info(COMPILE_QML COMPILE_QML "Pre-compile QML files using the Qt Quick compiler.")
if(COMPILE_QML)
find_package(Qt5QuickCompiler)
set_package_properties(Qt5QuickCompiler PROPERTIES
DESCRIPTION "Pre-compile QML files using the Qt Quick compiler."
TYPE OPTIONAL
)
endif()
#=============================================================================
# Debug QML
#
option(DEBUG_QML "Build QGroundControl with QML debugging/profiling support." FALSE)
add_feature_info(DEBUG_QML DEBUG_QML "Build QGroundControl with QML debugging/profiling support.")
if(DEBUG_QML)
message(STATUS "To enable the QML debugger/profiler, run with: '-qmljsdebugger=port:1234'")
add_definitions(-DQMLJSDEBUGGER)
add_definitions(-DQT_DECLARATIVE_DEBUG)
add_definitions(-DQT_QML_DEBUG)
endif()
#=============================================================================
# GStreamer
#
find_package(PkgConfig)
pkg_check_modules(GST
gstreamer-1.0>=1.14
gstreamer-video-1.0>=1.14
gstreamer-gl-1.0>=1.14
egl
)
if (GST_FOUND)
include_directories(
${GST_INCLUDE_DIRS}
src/Taisync
src/Microhard
)
add_definitions(
-DQGC_GST_STREAMING
-DQGC_GST_TAISYNC_ENABLED
-DQGC_GST_MICROHARD_ENABLED
)
endif()
add_definitions(
-DQGC_ENABLE_MAVLINK_INSPECTOR
)
#=============================================================================
# Qt5
#
find_package(Qt5 ${QT_VERSION}
COMPONENTS
Bluetooth
Charts
Concurrent
Core
Location
Multimedia
Network
Positioning
Quick
QuickControls2
QuickWidgets
OpenGL
Sql
Svg
Test
TextToSpeech
Widgets
Xml
REQUIRED
HINTS
${QT_LIBRARY_HINTS}
)
if(NOT QT_MKSPEC MATCHES "winrt")
find_package(Qt5 ${QT_VERSION}
COMPONENTS
SerialPort
REQUIRED
HINTS
${QT_LIBRARY_HINTS}
)
endif()
# Sets the default flags for compilation and linking.
include(CompileOptions)
include_directories(
libs/eigen
libs/mavlink/include/mavlink/v2.0
libs/mavlink/include/mavlink/v2.0/ardupilotmega
libs/mavlink/include/mavlink/v2.0/common
libs/shapelib
)
add_subdirectory(libs)
add_subdirectory(src)
set(QGC_RESOURCES
qgcresources.qrc
qgroundcontrol.qrc
qgcimages.qrc
src/FirmwarePlugin/APM/APMResources.qrc
src/FirmwarePlugin/PX4/PX4Resources.qrc
src/Airmap/airmap.qrc
src/Airmap/dummy/airmap_dummy.qrc
)
if(BUILD_TESTING)
list(APPEND QGC_RESOURCES
UnitTest.qrc
)
endif()
if(ANDROID)
add_library(QGroundControl SHARED ${QGC_RESOURCES})
else()
add_executable(QGroundControl ${QGC_RESOURCES})
endif()
target_link_libraries(QGroundControl PRIVATE qgc)
if(BUILD_TESTING)
target_link_libraries(QGroundControl PRIVATE Qt5::Test)
endif()
if(NOT QT_MKSPEC MATCHES "winrt")
target_link_libraries(QGroundControl
PUBLIC
Qt5::SerialPort
)
endif()
include(QGCDeploy)
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化