Skip to content
Snippets Groups Projects
Select Git revision
  • main default protected
  • dev-smart-pointer-refactor-2
  • topics
  • outgoingmessagesviewer
  • qt6
  • dev-smart-pointer-refactor
  • gse-interface-dev
  • crash-report-dev
  • riccardo-dev
  • roccaraso2024
  • euroc2024
  • euroc2023
  • roccaraso2023
  • euroc-2021
14 results

CMakeLists.txt

Blame
  • 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()