cmake_minimum_required(VERSION 3.16) project(XNEngine 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() find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Core Xml) find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core Xml) find_package(Threads REQUIRED) find_package(OpenSSL REQUIRED) if(${QT_VERSION_MAJOR} GREATER_EQUAL 6) qt_add_executable(XNEngine MANUAL_FINALIZATION main.cpp XNEngine.h XNEngine.cpp ) # 获取Qt库的安装路径 get_target_property(QT_LIB_DIR Qt${QT_VERSION_MAJOR}::Core LOCATION) get_filename_component(QT_LIB_DIR ${QT_LIB_DIR} DIRECTORY) # 设置rpath set_target_properties(XNEngine PROPERTIES BUILD_WITH_INSTALL_RPATH TRUE INSTALL_RPATH "${QT_LIB_DIR}" ) else() add_executable(XNEngine main.cpp XNEngine.h XNEngine.cpp ) endif() #if(CMAKE_SYSTEM_NAME STREQUAL "Linux") find_library(XNCORE_LIBRARY NAMES XNCore PATHS ../XNCore/build) target_link_libraries(XNEngine PRIVATE Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Xml ${XNCORE_LIBRARY} fastcdr fastdds pthread OpenSSL::SSL OpenSSL::Crypto ) #elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows") # target_link_libraries(XNEngine # Qt${QT_VERSION_MAJOR}::Core # Qt${QT_VERSION_MAJOR}::Xml # XNCore) #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() include(GNUInstallDirs) install(TARGETS XNEngine 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}/XNEngine \"metadata::custom-icon\" \"file://${CMAKE_INSTALL_PREFIX}/resource/XNEngine.png\") ") if(QT_VERSION_MAJOR EQUAL 6) qt_finalize_executable(XNEngine) endif()