set(sources
utils.c
allocator.c
string.c
list.c
array_list.c
linked_list.c
buffer.c
map.c
hash_key.c
hash_map.c
basic_mempool.c
printf.c
compare.c
)
set(headers
cx/common.h
cx/utils.h
cx/string.h
cx/allocator.h
cx/iterator.h
cx/collection.h
cx/list.h
cx/array_list.h
cx/linked_list.h
cx/buffer.h
cx/map.h
cx/hash_key.h
cx/hash_map.h
cx/mempool.h
cx/basic_mempool.h
cx/printf.h
cx/compare.h
)
add_library(ucx SHARED ${sources})
add_library(ucx_static STATIC ${sources})
target_include_directories(ucx PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_include_directories(ucx_static PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
set_target_properties(ucx PROPERTIES SOVERSION 4 VERSION 4.0.0)
set_target_properties(ucx_static PROPERTIES VERSION ${CMAKE_PROJECT_VERSION})
# it is sufficient to specify the headers for one of the targets
set_target_properties(ucx PROPERTIES PUBLIC_HEADER "${headers}")
include(GNUInstallDirs)
install(TARGETS ucx ucx_static
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/cx)