Select Git revision
CMakeLists.txt
CMakeLists.txt 5.50 KiB
# Copyright (c) 2024 Skyward Experimental Rocketry
# Author: Damiano Amatruda, Alberto Nidasio
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files(the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
cmake_minimum_required(VERSION 3.16)
project(SkywardHub)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# MAvLink Skyward library
add_subdirectory(libs/mavlink-skyward-lib EXCLUDE_FROM_ALL)
# Backward-cpp
set(MINGW_MSVCR_LIBRARY msvcrt CACHE STRING "Mingw MSVC runtime import library") # Fix dependency on msvcr90
add_subdirectory(libs/backward-cpp)
# Qt5 and its modules
find_package(Qt5 REQUIRED COMPONENTS Widgets SerialPort PrintSupport 3DCore 3DExtras 3DRender 3DInput)
add_executable(skywardhub
# Primary files
src/main.cpp
src/application.qrc
# Componets
src/shared/Components/ModulesPicker/ModulesPicker.cpp
src/shared/Components/SaveConfigurationDialog/SaveConfigurationDialog.cpp
src/shared/Components/SubscriptionsPanel/SubscriptionsPanel.cpp
src/shared/Components/ToggleButton/ToggleButton.cpp
src/shared/Components/ErrorDisplayer/Error.cpp
src/shared/Components/ErrorDisplayer/ErrorDisplayer.cpp
src/shared/Components/FilterSelector/FilterSelector.cpp
# Core
src/shared/Core/Message/Field.cpp
src/shared/Core/Message/Filter.cpp
src/shared/Core/Message/Message.cpp
src/shared/Core/Message/Topic.cpp
src/shared/Core/MessageBroker/MessageBroker.cpp
src/shared/Core/QCustomPlot/QCustomPlot.cpp
src/shared/Core/Window/Window.cpp
src/shared/Core/SkywardHubCore.cpp
src/shared/Core/XmlObject.cpp
# Modules
src/shared/Modules/CommandPad/CommandPad.cpp
src/shared/Modules/CommandPad/MessageFormElement.cpp
src/shared/Modules/CompactCommandPad/CompactCommandPad.cpp
src/shared/Modules/CompactCommandPad/CommandSelector.cpp
src/shared/Modules/CompactCommandPad/SendThread.cpp
src/shared/Modules/Empty/EmptyModule.cpp
src/shared/Modules/FileStream/FileStreamModule.cpp
src/shared/Modules/Graph/Graph.cpp
src/shared/Modules/IncomingMessagesViewer/IncomingMessagesViewerModule.cpp
src/shared/Modules/Mavlink/Ports/MavlinkPort.cpp
src/shared/Modules/Mavlink/Ports/SerialPort.cpp
src/shared/Modules/Mavlink/Ports/UdpPort.cpp
src/shared/Modules/Mavlink/BaseMavlinkModule.cpp
src/shared/Modules/Mavlink/MavlinkCodec.cpp
src/shared/Modules/Mavlink/SerialMavlinkModule.cpp
src/shared/Modules/Mavlink/UdpMavlinkModule.cpp
src/shared/Modules/OutgoingMessagesViewer/OutgoingMessagesViewerModule.cpp
src/shared/Modules/Splitter/Splitter.cpp
src/shared/Modules/OrientationVisualizer/OrientationVisualizer.cpp
src/shared/Modules/MainStateViewer/MainStateViewer.cpp
src/shared/Modules/PayloadStateViewer/PayloadStateViewer.cpp
src/shared/Modules/RigStateViewer/RigStateViewer.cpp
src/shared/Modules/ARPStateViewer/ARPStateViewer.cpp
src/shared/Modules/Tabs/TabsModule.cpp
src/shared/Modules/Test/TestModule.cpp
src/shared/Modules/TimerController/TimerControllerModule.cpp
src/shared/Modules/ValuesConverterViewer/ValueElement.cpp
src/shared/Modules/ValuesConverterViewer/ValuesConverterViewerModule.cpp
src/shared/Modules/ValuesConverterViewer/ValuesViewerConfigPanel.cpp
src/shared/Modules/ModuleInfo.cpp
src/shared/Modules/ModulesList.cpp
src/shared/Modules/ValvesViewer/ValvesViewer.cpp
src/shared/Modules/Module.cpp
)
target_include_directories(skywardhub PRIVATE src/shared)
target_link_libraries(skywardhub PUBLIC
Qt5::Widgets
Qt5::SerialPort
Qt5::PrintSupport
Qt5::3DCore
Qt5::3DExtras
Qt5::3DRender
Qt5::3DInput
Mavlink::Mavlink
)
set_target_properties(skywardhub PROPERTIES AUTOMOC ON)
set_target_properties(skywardhub PROPERTIES AUTORCC ON)
set_target_properties(skywardhub PROPERTIES AUTOUIC ON)
# Prevent the creation of a console window on Windows
set_target_properties(skywardhub PROPERTIES WIN32_EXECUTABLE TRUE)
# Create an applkication build on MacOS
set_target_properties(skywardhub PROPERTIES MACOSX_BUNDLE TRUE)
add_backward(skywardhub)
if(UNIX)
set(BACKWARD_HAS_DW 1)
set(BACKWARD_HAS_LIBUNWIND 1)
endif(UNIX)
# If WIN_DEPLOY_QT is defined, execute windeployqt.exe after every build.
# https://doc.qt.io/qt-5/windows-deployment.html#the-windows-deployment-tool
if(DEFINED ENV{WIN_DEPLOY_QT})
message("-- Using windeployqt.exe from $ENV{WIN_DEPLOY_QT}")
add_custom_command(
TARGET skywardhub POST_BUILD
COMMAND $ENV{WIN_DEPLOY_QT} skywardhub.exe
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMENT "Running windeployqt.exe..."
)
endif()