@ -148,7 +148,8 @@ function(merge_static_libs TARGET_NAME)
C O M M A N D r m " $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / l i b $ { T A R G E T _ N A M E } . a "
C O M M A N D / u s r / b i n / l i b t o o l - s t a t i c - o " $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / l i b $ { T A R G E T _ N A M E } . a " $ { l i b f i l e s }
)
else ( ) # g e n e r a l UNIX : u s e " a r " t o e x t r a c t o b j e c t s a n d r e - a d d t o a c o m m o n l i b
endif ( APPLE )
if ( LINUX ) # g e n e r a l UNIX : u s e " a r " t o e x t r a c t o b j e c t s a n d r e - a d d t o a c o m m o n l i b
set ( target_DIR ${ CMAKE_CURRENT_BINARY_DIR } / ${ TARGET_NAME } .dir )
foreach ( lib ${ libs } )
@ -187,7 +188,36 @@ function(merge_static_libs TARGET_NAME)
C O M M A N D $ { C M A K E _ A R } c r s $ { t a r g e t _ L I B N A M E } ` f i n d $ { t a r g e t _ D I R } - n a m e ' * . o ' `
C O M M A N D $ { C M A K E _ R A N L I B } $ { t a r g e t _ L I B N A M E }
W O R K I N G _ D I R E C T O R Y $ { t a r g e t _ D I R } )
endif ( )
endif ( LINUX )
if ( WIN32 ) # w i n d o w s d o n o t s u p p o r t g c c / n v c c c o m b i n e d c o m p i l i n g . U s e m s v c l i b . e x e t o m e r g e l i b s .
# M a k e t h e g e n e r a t e d d u m m y s o u r c e f i l e d e p e n d e d o n a l l s t a t i c i n p u t
# l i b s . I f i n p u t l i b c h a n g e s , t h e s o u r c e f i l e i s t o u c h e d
# w h i c h c a u s e s t h e d e s i r e d effect ( relink ) .
add_custom_command ( OUTPUT ${ target_SRCS }
C O M M A N D $ { C M A K E _ C O M M A N D } - E t o u c h $ { t a r g e t _ S R C S }
D E P E N D S $ { l i b s } )
# G e n e r a t e d u m m y s t a i c l i b
file ( WRITE ${ target_SRCS } "const char *dummy_${TARGET_NAME} = \" ${ target_SRCS } \";")
add_library ( ${ TARGET_NAME } STATIC ${ target_SRCS } )
target_link_libraries ( ${ TARGET_NAME } ${ libs_deps } )
foreach ( lib ${ libs } )
# G e t t h e f i l e n a m e s o f t h e l i b r a r i e s t o b e m e r g e d
# if ( NOT $< TARGET_FILE:${lib} > MATCHES "lib.*\\.lib" )
# message ( "library" ${ lib } )
# set ( libfiles ${ libfiles } lib $< TARGET_FILE:${lib} > )
# else ( )
set ( libfiles ${ libfiles } $< TARGET_FILE:${lib} > )
# endif ( )
endforeach ( )
# w i n d o w s c m d r e t u r n e r r o r i n c l e a n e n v .
# C O M M A N D d e l " $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / $ { C M A K E _ B U I L D _ T Y P E } / $ { T A R G E T _ N A M E } . l i b "
add_custom_command ( TARGET ${ TARGET_NAME } POST_BUILD
C O M M A N D l i b / O U T : $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / l i b $ { T A R G E T _ N A M E } . l i b $ { l i b f i l e s }
)
endif ( WIN32 )
endfunction ( merge_static_libs )
function ( cc_library TARGET_NAME )
@ -195,6 +225,10 @@ function(cc_library TARGET_NAME)
set ( oneValueArgs "" )
set ( multiValueArgs SRCS DEPS )
cmake_parse_arguments ( cc_library "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ ARGN } )
if ( WIN32 )
# a d d l i b x x x . l i b p r e f i x i n w i n d o w s
set ( ${ TARGET_NAME } _LIB_NAME "${CMAKE_STATIC_LIBRARY_PREFIX}${TARGET_NAME}${CMAKE_STATIC_LIBRARY_SUFFIX}" CACHE STRING "output library name for target ${TARGET_NAME}" )
endif ( WIN32 )
if ( cc_library_SRCS )
if ( cc_library_SHARED OR cc_library_shared ) # b u i l d * . s o
add_library ( ${ TARGET_NAME } SHARED ${ cc_library_SRCS } )