This new structure provides several benefits:
* Allows us to install multiple CMake projects in the same destination
dir (without include path conflicts).
- This makes shipping the trading algo sdk a trivial excercise. Simply
copy the lib and include dirs from the install dest. That's it!
* Puts us in a position to break up the monolithic libspark into smaller
modules, which are easier to manage.
Windows specific notes:
* Get rid of unnecessary script vs_filters.cmake
* Define WebsocketConnectionGateway directly in cs (instead of proto)
- The proto would no longer be in the include path passed to protoc.
Moving it to c# because there wasn't a compelling reason for it to
be a proto in the first place.
* Set spark output prefix to "lib" on windows
- So we get "libspark.dll" instead of "spark.dll", which conflicts
with the csharp lib, "Spark.dll".
* Copy libspark.dll to net8.0 & net8.0-windows in a single cmake build
target
fix build: Copy libspark to both dirs net8.0, net8.0-windows
45 lines
1.3 KiB
CMake
45 lines
1.3 KiB
CMake
include_guard(DIRECTORY)
|
|
include(CMakePackageConfigHelpers)
|
|
include(${CMAKE_SOURCE_DIR}/cmake/SetFirstDefined.cmake)
|
|
|
|
function(pack_basic)
|
|
set(_options)
|
|
set(_one_value_args NAME)
|
|
set(_multi_value_args)
|
|
cmake_parse_arguments(_ARGS "${_options}" "${_one_value_args}" "${_multi_value_args}" ${ARGN})
|
|
set_first_defined(_name _ARGS_NAME PROJECT_NAME)
|
|
|
|
find_package(Git QUIET)
|
|
|
|
if(GIT_FOUND)
|
|
execute_process(
|
|
COMMAND ${GIT_EXECUTABLE} describe --tags --always --dirty
|
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
|
OUTPUT_VARIABLE PROJECT_VERSION
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
)
|
|
endif()
|
|
|
|
if(NOT GIT_FOUND OR PROJECT_VERSION STREQUAL "")
|
|
set(PROJECT_VERSION "0.0.0")
|
|
endif()
|
|
|
|
write_basic_package_version_file(
|
|
"${CMAKE_CURRENT_BINARY_DIR}/${_name}ConfigVersion.cmake"
|
|
VERSION ${PROJECT_VERSION}
|
|
COMPATIBILITY AnyNewerVersion
|
|
)
|
|
|
|
configure_package_config_file(
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/${_name}Config.cmake"
|
|
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${_name}
|
|
)
|
|
|
|
install(
|
|
FILES
|
|
"${CMAKE_CURRENT_BINARY_DIR}/${_name}Config.cmake"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/${_name}ConfigVersion.cmake"
|
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${_name})
|
|
endfunction()
|