cmake 2.6.2 now required - changes in handling shared libs
Alexander Neundorf
neundorf at kde.org
Sun Nov 30 17:42:20 CET 2008
On Sunday 30 November 2008, Ben Boeckel wrote:
> On Sat, Nov 29, 2008 at 11:13, Alexander Neundorf <neundorf at kde.org> wrote:
> > On Friday 28 November 2008, Ben Boeckel wrote:
> > ...
> >
> > > I'm upstream; installing for every library would be counterproductive.
> >
> > I'd
> >
> > > have to do `make sigcore; make install sigcore; make sigmod; make
> > > install sigmod` and so on for each library. I want to just be able to
> > > do `make`
> >
> > and
> >
> > So sigcore is not part of your project, but it is already installed and
> > you are "only" using it ?
> >
> > Alex
>
> It is part of my project. I don't want to have to do a make install between
> each change to each library so that the other libraries that depend on it
> can see it; doing make should do everything.
Ok, I', confused.
What you should have and what should work is the following:
add_library(sigcore SHARED ...)
install(TARGETS sigcore DESTINATION lib EXPORT sigmod_EXPORTS)
in some other CMakeLists.txt:
add_library(sigmod SHARED ...)
target_link_libraries(sigmod sigcore ...)
install(TARGETS sigmod DESTINATION lib EXPORT sigmod_EXPORTS)
Here the two targets are both added to the same set of exported targets,
named "sigmod_EXPORTS". This means that when sigmod is "exported" it can
be "imported" later on by other cmake projects, i.e. they can treat the
shared library internally similar to the way how shared libraries created
using add_library() are handled.
If you export only one of them, e.g. sigmod will try to specify its
dependencies but notice that the library it depends on isn't exported, that's
the error you got.
(or if you don't have users which will use your libraries but only the
executables in your project are using them you don't need the EXPORT stuff at
all).
If that doesn't help, please post the significant parts of you cmake files or
a small test case.
Alex
More information about the Kde-buildsystem
mailing list