XNSim/XNMonitor/CMakeLists.txt
2025-04-28 12:25:20 +08:00

157 lines
4.8 KiB
CMake
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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