myx-cmake/MyxCMake/modules/MyxCMakeAddStaticLibrary.cmake

25 lines
921 B
CMake

# Создание статической библиотеки из объектной библиотеки
function(myx_cmake_add_static_library target)
myx_cmake_canonical_string(${target} _ctarget)
option(BUILD_${_ctarget}_STATIC "build static library ${_ctarget}" ON)
if(NOT BUILD_${_ctarget}_STATIC)
return()
endif()
get_target_property(__target_type ${target} TYPE)
if(NOT __target_type STREQUAL OBJECT_LIBRARY)
message(FATAL_ERROR
"MyxCMake: myx_cmake_add_static_library needs target of type OBJECT_LIBRARY")
return()
endif()
add_library(${target}-static STATIC $<TARGET_OBJECTS:${target}>)
set_target_properties(${target}-static
PROPERTIES
OUTPUT_NAME ${target}
ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR})
install(TARGETS ${target}-static
COMPONENT static
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
endfunction()