UNIXworkcode

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)