cmake_minimum_required(VERSION 3.16) project(XNCore LANGUAGES CXX) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_POSITION_INDEPENDENT_CODE 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(nlohmann_json REQUIRED) find_package(Threads REQUIRED) find_package(OpenSSL REQUIRED) find_package(SQLite3 REQUIRED) add_library(XNCore SHARED XNCore_global.h XNCore_Function.cpp XNTypeTraits.h XNByteArray.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 XNThread_p.h 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.cpp XNServiceManager.h XNServiceManager_p.h XNServiceManager.cpp XNEventManager.h XNEventManager_p.h XNEventManager.cpp XNServiceObject.h XNServiceObject_p.h XNServiceObject.cpp XNDDSInterface.h XNDDSInterface.cpp ${DDS_XNIDL_SOURCES_CXX} ) target_link_libraries(XNCore PRIVATE ${CMAKE_THREAD_LIBS_INIT} fastcdr fastdds pthread OpenSSL::SSL OpenSSL::Crypto nlohmann_json sqlite3 dl ) 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)