The 'install' build target creates a self-contained (deployable) sparkd package. It copies the sparkd executable and its dependencies into a single directory (no symlinks), which can then be copied/deployed to another machine. Run `cmake --build . --target install` to install sparkd in the directory defined by the CMAKE_INSTALL_PREFIX variable.
77 lines
3.3 KiB
CMake
77 lines
3.3 KiB
CMake
cmake_minimum_required(VERSION 3.5)
|
|
project(spark)
|
|
|
|
set (USE_ONIX "TRUE")
|
|
|
|
if (WIN32)
|
|
set (platform "windows")
|
|
else ()
|
|
set (platform "linux")
|
|
endif ()
|
|
|
|
set (EXTERNALS_ROOT "${CMAKE_SOURCE_DIR}/externals/${platform}")
|
|
set (SPARK_PYTHON "${EXTERNALS_ROOT}/python")
|
|
set (SPARK_BIN "${EXTERNALS_ROOT}/bin")
|
|
set (SPARK_INCLUDE "${EXTERNALS_ROOT}/include")
|
|
set (SPARK_LIB "${EXTERNALS_ROOT}/lib/${CMAKE_BUILD_TYPE}")
|
|
|
|
include_directories (BEFORE SYSTEM ${SPARK_INCLUDE} ${EXTERNALS_ROOT}/include/zlib)
|
|
link_directories (${SPARK_LIB})
|
|
|
|
if (WIN32)
|
|
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} \
|
|
/MP \
|
|
/WX /wd4251 /wd4250 /wd4251 /wd4244 /wd4267 /wd4355 /wd4275 /wd4345 \
|
|
/DCURL_STATICLIB \
|
|
/D_WINSOCK_DEPRECATED_NO_WARNINGS \
|
|
/D__TBB_NO_IMPLICIT_LINKAGE \
|
|
/DBOOST_ALL_NO_LIB \
|
|
/D_SCL_SECURE_NO_WARNINGS /D_CRT_SECURE_NO_WARNINGS /D_WIN32_WINNT=0x0600")
|
|
|
|
set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")
|
|
set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_DEBUG} /MT")
|
|
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /DEBUG /OPT:REF /OPT:ICF /LTCG")
|
|
|
|
add_subdirectory(src/lib)
|
|
else ()
|
|
# so that sparkd looks for libspark.so in its directory
|
|
set (CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
|
|
set (CMAKE_INSTALL_RPATH ".")
|
|
|
|
set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} \
|
|
-fPIC -Wall -pedantic -Wextra -Werror \
|
|
-Wno-missing-braces -Wno-ignored-qualifiers \
|
|
--std=c++17 -fdiagnostics-color")
|
|
|
|
if (${USE_ONIX})
|
|
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DUSE_ONIX")
|
|
endif()
|
|
|
|
set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_DEBUG} -fno-omit-frame-pointer -DNDEBUG -O3")
|
|
set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DDEBUG")
|
|
set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wno-undef")
|
|
add_subdirectory(src/server/sparkd)
|
|
add_subdirectory(src/lib)
|
|
# add_subdirectory(src/web)
|
|
add_subdirectory(doc/user)
|
|
add_subdirectory(src/sdk)
|
|
add_subdirectory(src/data_files)
|
|
|
|
add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/server
|
|
COMMAND mkdir -p ${CMAKE_BINARY_DIR}/server
|
|
COMMAND ln ARGS -sf ${CMAKE_BINARY_DIR}/src/server/sparkd/sparkd ${CMAKE_BINARY_DIR}/server
|
|
COMMAND ln ARGS -sf ${CMAKE_BINARY_DIR}/web ${CMAKE_BINARY_DIR}/server
|
|
COMMAND ln ARGS -sf ${CMAKE_BINARY_DIR}/data_files ${CMAKE_BINARY_DIR}/server
|
|
COMMAND ln ARGS -sf ${CMAKE_BINARY_DIR}/src/lib/libspark.so ${CMAKE_BINARY_DIR}/server
|
|
COMMAND ln ARGS -sf ${EXTERNALS_ROOT}/lib/Release/libOnixS.IceImpactMulticastPriceFeedHandlerCpp.so.3.16.0.0 ${CMAKE_BINARY_DIR}/server
|
|
COMMAND ln ARGS -sf ${EXTERNALS_ROOT}/lib/Release/libACE-5.7.5.so ${CMAKE_BINARY_DIR}/server
|
|
COMMAND mkdir ARGS -p ${CMAKE_BINARY_DIR}/server/plugins
|
|
COMMENT "Creating server runtime layout"
|
|
DEPENDS sparkd data_files_dir)
|
|
|
|
add_custom_target(server_layout ALL DEPENDS ${CMAKE_BINARY_DIR}/server)
|
|
|
|
install(FILES "${CMAKE_SOURCE_DIR}/externals/linux/lib/${CMAKE_BUILD_TYPE}/libACE-5.7.5.so" DESTINATION bin)
|
|
install(FILES "${CMAKE_SOURCE_DIR}/externals/linux/lib/${CMAKE_BUILD_TYPE}/libOnixS.IceImpactMulticastPriceFeedHandlerCpp.so.3.16.0.0" DESTINATION bin)
|
|
endif()
|