I don't know if i should post here or on cmake but
I passed 1 hour finding why I have undefined symbols and there seams to be a bug in how cmake manage inter static linking under nux (don't know about visual)
if lib1 depends on lib2 resulting lib1 have undefined symbols (lib2 symbol not defined in lib1)
so if you use lib1 in you exec it fails saying lib2 symbols aren't defined
my fix:
for all XXX with dependencies replace all
Code: Select all
ADD_LIBRARY(XXX XXXSOURCES)
IF (BUILD_SHARED_LIBS)
TARGET_LINK_LIBRARIES(XXX DEPENDANTLIB)
ENDIF (BUILD_SHARED_LIBS)
Code: Select all
IF (BUILD_SHARED_LIBS)
ADD_LIBRARY(XXX SHARED XXXSOURCES) (perhaps shared should be omitted as build shared libs only there to use MD runtime under MSVC...havent test under windows yet)
TARGET_LINK_LIBRARIES(XXX DEPENDANTLIBS)
ELSE()
if(win32)
ADD_LIBRARY(XXX STATIC XXXSOURCES) ..perhaps something should be done but haven't test
else()
ADD_LIBRARY(XXXtemp STATIC XXXSOURCES)
add_custom_target(XXX ALL
COMMAND ${CMAKE_AR} rcT libXXX.a $<TARGET_FILE:XXXtemp> $<TARGET_FILE:DEPENDANTLIB1> ..etc.. )
endif(win32)
ENDIF (BUILD_SHARED_LIBS)
ps: I use cmake v.2.8 perhaps further versions work better