# Создание статической и динамической библиотеки из одинаковых объектных файлов function(add_common_library target) set(options) set(oneValueArgs OUTPUT_NAME) set(multiValueArgs SOURCES) cmake_parse_arguments(_PREFIX "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) if(_PREFIX_OUTPUT_NAME) set(output_name ${_PREFIX_OUTPUT_NAME}) else() set(output_name ${target}) endif() add_library(${target} OBJECT ${_PREFIX_SOURCES}) target_include_directories( ${target} PUBLIC $ $ $) set_target_properties(${target} PROPERTIES POSITION_INDEPENDENT_CODE ON) # cmake-format: off if(BUILD_SHARED_LIBS) add_library(${target}_shared SHARED $) set_target_properties(${target}_shared PROPERTIES OUTPUT_NAME ${output_name} VERSION ${PROJECT_VERSION} SOVERSION ${PROJECT_VERSION_MAJOR} LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}) install(TARGETS ${target}_shared LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() if(NOT SKIP_STATIC_LIBS) add_library(${target}_static STATIC $) set_target_properties(${target}_static PROPERTIES OUTPUT_NAME ${output_name} ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}) install(TARGETS ${target}_static ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) endif() # cmake-format: on endfunction()