106 lines
2.3 KiB
CMake
Executable File
106 lines
2.3 KiB
CMake
Executable File
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
|
|
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) |