Quoting Oliver Dole <[EMAIL PROTECTED]>:
The problem is that I use pkg-config (and stuff like that) to retrieve
my libraries. So CMake does not know wether it is static or shared
libraries to use. Nonetheless I have found a workaround thanks to this
thread: http://www.cmake.org/pipermail/cmake/2006-September/011096.html
So I have just added the following in my CMakeFiles:
    IF (NOT BUILD_SHARED_LIBS)
        SET (LIBRARIES_TO_LINK ${LIBRARIES_TO_LINK} -Wl,-Bstatic
${LIBXSLT_LIBS})
    ELSE (NOT BUILD_SHARED_LIBS)
        SET (LIBRARIES_TO_LINK ${LIBRARIES_TO_LINK} ${LIBXSLT_LIBS})
    ENDIF (NOT BUILD_SHARED_LIBS)
Unfortunately I still have a problem, but which is not due to cmake.
My application indirectly needs to link with -lgcc_s and I do not have
the static library for that, so I get an error :'(

Why do you try to work around that? Instead, do it properly by using find_library:
pkg_check_modules ( PKGCONFIG_MYPREFIX something )
foreach ( i ${PKGCONFIG_MYPREFIX_STATIC_LIBRARIES} )
  find_library ( ${i}_LIBRARY
                 NAMES ${i}
                 PATHS ${PKGCONFIG_MYPREFIX_LIBRARY_DIRS}
               )
  list ( APPEND MYPREFIX_LIBRARIES ${i}_LIBRARY );
endforeach ( i)
Actually, FindPkgConfig.cmake should be changed to give full paths to libraries. Also note, that you MUST use the pkgconfig variables for static linking, not the ones for dynamic linking (see module help of FindPkgConfig)

I am sure that somehow this can be made to find only the static libs, if not then that should be fixed. OTOH, you may want to reconsider if you really want to give your users so much pain :-/ RAM is cheap but not available for free.

Additionally, building a static library does NOT mean that you have to link everything statically. You'll regret such a decision sooner or later.

HS


_______________________________________________
CMake mailing list
[email protected]
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to