105 lines
2.4 KiB
CMake
105 lines
2.4 KiB
CMake
|
cmake_minimum_required(VERSION 3.16)
|
||
|
|
||
|
project(XNCore 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()
|
||
|
|
||
|
file(GLOB DDS_XNIDL_SOURCES_CXX "XNIDL/*.cxx")
|
||
|
|
||
|
find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Core Xml Network)
|
||
|
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core Xml Network)
|
||
|
find_package(Threads REQUIRED)
|
||
|
find_package(OpenSSL REQUIRED)
|
||
|
|
||
|
add_library(XNCore SHARED
|
||
|
XNCore_global.h
|
||
|
XNObject.h
|
||
|
XNObject.cpp
|
||
|
XNObject_p.h
|
||
|
XNFramework.cpp
|
||
|
XNFramework.h
|
||
|
XNFramework_p.h
|
||
|
XNBaseFrameObject.h
|
||
|
XNBaseFrameObject.cpp
|
||
|
XNBaseFrameObject_p.h
|
||
|
XNLogger.h
|
||
|
XNLogger.cpp
|
||
|
XNTimeManager.h
|
||
|
XNTimeManager_p.h
|
||
|
XNTimeManager.cpp
|
||
|
XNThread.h
|
||
|
XNThread.cpp
|
||
|
XNThreadManager.h
|
||
|
XNThreadManager_p.h
|
||
|
XNThreadManager.cpp
|
||
|
XNModelObject.h
|
||
|
XNModelObject_p.h
|
||
|
XNModelObject.cpp
|
||
|
XNModelManager.h
|
||
|
XNModelManager_p.h
|
||
|
XNModelManager.cpp
|
||
|
XNScenarioManager.h
|
||
|
XNScenarioManager_p.h
|
||
|
XNScenarioManager.cpp
|
||
|
XNDDSManager.h
|
||
|
XNDDSManager_p.h
|
||
|
XNDDSManager.cpp
|
||
|
XNServiceManager.h
|
||
|
XNServiceManager_p.h
|
||
|
XNServiceManager.cpp
|
||
|
XNEventManager.h
|
||
|
XNEventManager_p.h
|
||
|
XNEventManager.cpp
|
||
|
XNServiceObject.h
|
||
|
XNServiceObject_p.h
|
||
|
XNServiceObject.cpp
|
||
|
XNDDSInterface.h
|
||
|
${DDS_XNIDL_SOURCES_CXX}
|
||
|
)
|
||
|
|
||
|
target_link_libraries(XNCore PRIVATE
|
||
|
${CMAKE_THREAD_LIBS_INIT}
|
||
|
Qt${QT_VERSION_MAJOR}::Core
|
||
|
Qt${QT_VERSION_MAJOR}::Xml
|
||
|
Qt${QT_VERSION_MAJOR}::Network
|
||
|
fastcdr
|
||
|
fastdds
|
||
|
pthread
|
||
|
OpenSSL::SSL
|
||
|
OpenSSL::Crypto
|
||
|
)
|
||
|
|
||
|
target_compile_definitions(XNCore PRIVATE XNCORE_LIBRARY)
|
||
|
|
||
|
# 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 XNCore
|
||
|
BUNDLE DESTINATION .
|
||
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||
|
RUNTIME DESTINATION .
|
||
|
)
|
||
|
|
||
|
# 添加自定义命令和目标以拷贝所有头文件
|
||
|
file(GLOB HEADER_FILES "*.h")
|
||
|
|
||
|
# 使用 install 命令在安装时拷贝头文件
|
||
|
install(FILES ${HEADER_FILES} DESTINATION ${CMAKE_INSTALL_PREFIX}/include/XNCore)
|
||
|
|
||
|
file(GLOB IDL_FILES "XNIDL/*")
|
||
|
install(FILES ${IDL_FILES} DESTINATION ${CMAKE_INSTALL_PREFIX}/include/XNIDL)
|