cmake 2.6.2 now required - changes in handling shared libs

Andreas Pakulat apaku at
Tue Nov 11 21:39:09 GMT 2008

On 11.11.08 01:00:50, Alexander Neundorf wrote:
> Hi,
> as of now cmake 2.6.2 is required to build KDE4 trunk.
> This brings some bugfixes, some nice features and one relatively big change, 
> which concerns shared library handling.
> Warning: if you get linker errors or errors related to different build 
> types/configurations (i.e. debug vs. release etc.) please let me know .
> Now straight on to the big change(TM).
> Short version:
> In kdelibs, when creating a shared lib, now also add the arguments
> "EXPORT kdelibsLibraryTargets" to the install(TARGETS ...) command, like this:
> install(TARGETS threadweaver EXPORT kdelibsLibraryTargets
>                              ${INSTALL_TARGETS_DEFAULT_ARGS})
> And to define a minimal link interface, do this:
> target_link_libraries(threadweaver
>                               LINK_INTERFACE_LIBRARIES ${QT_QTCORE_LIBRARY} )
> Now the long version (you should read it):
> The correct way to create and install a shared library is now:
> kde4_add_library(kfoo SHARED ${kfooSources} ) 
> target_link_libraries(kfoo kdecore ${QT_QTCORE_LIBRARY} ${ZLIB_LIBRARY})
> # No changes so far, but the next line is new.
> # It specifies to which libraries other targets will be linked which 
> # link to libkfoo. By default these are all libraries kfoo links against,
> # which can lead to some unnecessary dependencies, slower startup, etc.
> # So we now specifiy which "link interface" the library kfoo has, ZLIB
> # is used only internally, so users of kfoo don't have to link against it:

So whats the plan with trunk/KDE now, who is supposed to check all the
modules and adjust the link-interface if needed?


Don't read everything you believe.

More information about the kde-core-devel mailing list