cmake_minimum_required(VERSION 3.16) project(XNMonitor VERSION 0.1 LANGUAGES CXX) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) if(NOT fastcdr_FOUND) find_package(fastcdr 2 REQUIRED) endif() if(NOT fastdds_FOUND) find_package(fastdds 3 REQUIRED) endif() # 获取环境变量 if(DEFINED ENV{XNCore}) set(XNCore_PATH $ENV{XNCore}) else() message(FATAL_ERROR "Environment variable XNCore is not set.") endif() # 添加 XNCore_PATH 下的 include 目录为包含目录 include_directories(${XNCore_PATH}/include) file(GLOB DDS_XNIDL_SOURCES_CXX "../XNCore/XNIDL/*.cxx") add_definitions(-DQCUSTOMPLOT_USE_OPENGL) find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Core Widgets PrintSupport Xml OpenGLWidgets ) find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets PrintSupport Xml OpenGLWidgets ) find_package(OpenGL REQUIRED) # 添加这一行 find_package(OpenSSL REQUIRED) #set(QT_SOURCE_FILE qdarkstyle/light/lightstyle.qrc) # 将资源文件放到工程目录下,该部分会由RCC编译器预编译为cpp文件 set(QT_SOURCE_FILE ../qdarkstyle/dark/darkstyle.qrc) # 根据 Qt 版本选择正确的资源添加函数 qt6_add_resources(QT_RESOURCES ${QT_SOURCE_FILE}) set(PROJECT_SOURCES main.cpp mainwindow.cpp mainwindow.h SystemStatusWidget/SystemStatusWidget.h SystemStatusWidget/SystemStatusWidget.cpp ModelStatusWidget/ModelStatusWidget.h ModelStatusWidget/ModelStatusWidget.cpp DataMonitorWidget/DataMonitorWidget.h DataMonitorWidget/DataMonitorWidget.cpp DataCollectionWidget/DataCollectionWidget.h DataCollectionWidget/DataCollectionWidget.cpp SystemStatusWidget/SystemInfoUpdateThread.h SystemStatusWidget/SystemInfoUpdateThread.cpp ModelStatusWidget/ModelInfoUpdateThread.h ModelStatusWidget/ModelInfoUpdateThread.cpp DataMonitorWidget/DataMonitorThread.h DataMonitorWidget/DataMonitorThread.cpp DataCollectionWidget/DataCollectionThread.h DataCollectionWidget/DataCollectionThread.cpp TopicManager/DataReaderListenerImpl.h TopicManager/TopicManager.h TopicManager/TopicManager.cpp TopicMonitorFactory/TopicMonitor.h TopicMonitorFactory/TopicMonitorFactory.h TopicMonitorFactory/TopicMonitorFactory.cpp ModelTopicMonitor/AerodynamicsMonitor.h ModelTopicMonitor/WeightBalanceMonitor.h ModelTopicMonitor/GroundHandlingMonitor.h ModelTopicMonitor/AerodynamicsMonitor.cpp ModelTopicMonitor/WeightBalanceMonitor.cpp ModelTopicMonitor/GroundHandlingMonitor.cpp DebugWidget/DebugWidget.h DebugWidget/DebugWidget.cpp XNCustomPlot.h XNCustomPlot.cpp qcustomplot.h qcustomplot.cpp mainwindow.ui TypeDefine.h ${QT_RESOURCES} ) if(${QT_VERSION_MAJOR} GREATER_EQUAL 6) qt_add_executable(XNMonitor MANUAL_FINALIZATION ${PROJECT_SOURCES} ${DDS_XNIDL_SOURCES_CXX} ) # Define target properties for Android with Qt 6 as: # set_property(TARGET XNMonitor APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR # ${CMAKE_CURRENT_SOURCE_DIR}/android) # For more information, see https://doc.qt.io/qt-6/qt-add-executable.html#target-creation else() if(ANDROID) add_library(XNMonitor SHARED ${PROJECT_SOURCES} ) # Define properties for Android with Qt 5 after find_package() calls as: # set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android") else() add_executable(XNMonitor ${PROJECT_SOURCES} ${QT_RESOURCES} ${DDS_XNIDL_SOURCES_CXX} ) endif() endif() # Check if CMAKE_INSTALL_PREFIX is set to its default value if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) set(CMAKE_INSTALL_PREFIX "${CMAKE_SOURCE_DIR}/../Release" CACHE PATH "Install path prefix" FORCE) endif() target_link_libraries(XNMonitor PRIVATE Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::PrintSupport Qt${QT_VERSION_MAJOR}::Xml Qt${QT_VERSION_MAJOR}::OpenGLWidgets OpenGL::GL fastcdr fastdds OpenSSL::SSL OpenSSL::Crypto ${CMAKE_INSTALL_PREFIX}/Models/libXNAerodynamicsInterface.so ${CMAKE_INSTALL_PREFIX}/Models/libXNWeightBalanceInterface.so ${CMAKE_INSTALL_PREFIX}/Models/libXNGroundHandlingInterface.so ) include(GNUInstallDirs) install(TARGETS XNMonitor BUNDLE DESTINATION . LIBRARY DESTINATION . RUNTIME DESTINATION . ) # Add a post-installation command to set the application icon using gio install(CODE " execute_process(COMMAND gio set -t string ${CMAKE_INSTALL_PREFIX}/XNMonitor \"metadata::custom-icon\" \"file://${CMAKE_INSTALL_PREFIX}/resource/XNMonitor.png\") ") if(QT_VERSION_MAJOR EQUAL 6) qt_finalize_executable(XNMonitor) endif()