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.
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()
|