# merge libs into a single static library function(merge_static_libs outlib ) set(libs ${ARGV}) list(REMOVE_AT libs 0) set(objdir ${CMAKE_CURRENT_BINARY_DIR}/tmpobj) file(MAKE_DIRECTORY ${objdir}) set(dummyfile ${CMAKE_CURRENT_BINARY_DIR}/${outlib}_dummy.c) if(NOT EXISTS ${dummyfile}) file(WRITE ${dummyfile} "const char *dummy = \"${dummyfile}\";") endif() set_source_files_properties("${dummyfile}" PROPERTIES COMPILE_FLAGS -Wno-missing-variable-declarations) add_library(${outlib} STATIC ${dummyfile}) set(outfile $) foreach(lib ${libs}) add_custom_command(TARGET ${outlib} POST_BUILD DEPENDS ${lib} COMMAND ${CMAKE_COMMAND} -E echo "AR x ${lib}" COMMAND ${CMAKE_AR} x $ WORKING_DIRECTORY ${objdir}) endforeach() add_custom_command(TARGET ${outlib} POST_BUILD DEPENDS ${lib} COMMAND ${CMAKE_COMMAND} -E echo "AR ru ${outlib} tmpobj/*.o" COMMAND ${CMAKE_AR} ru "${outfile}" "${objdir}/*.o" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) endfunction()