cmake 2.6.2 now required - changes in handling shared libs

Andreas Pakulat apaku at gmx.de
Tue Nov 11 22:39:09 CET 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?

Andreas

-- 
Don't read everything you believe.


More information about the Kde-buildsystem mailing list