[Kde-bindings] building smoke and korundum separately

Stefano Crocco stefano.crocco at alice.it
Tue Mar 24 07:40:04 UTC 2009


Alle Monday 23 March 2009, Arno Rehn ha scritto:
> On Monday 23 March 2009 11:47:39 Stefano Crocco wrote:
> > Alle Sunday 22 March 2009, Arno Rehn ha scritto:
> > > On Sunday 22 March 2009 11:06:41 Stefano Crocco wrote:
> > > > I was trying to build smoke and korundum separately. The reason to do
> > > > this is that I wanted to create kdebindings packages for my
> > > > distribution (gentoo) which, at the moment, doesn't have any. Since
> > > > gentoo puts each kde application/library into an individual package,
> > > > I wanted to do the same with kdebindings. So my idea was: a package
> > > > for smoke, a package for korundum, a package for qyoto, and so on.
> > > >
> > > > I proceeded the following way:
> > > > - built smoke (installed in /usr/kde/svn/libs)
> > > > - created another build directory, run cmake from it then run ccmake
> > > > to only select qtruby and korundum (disabling smoke)
> > > > - run make
> > > >
> > > > As soon as make attempted to link libqtruby.so (or something similar,
> > > > I don't remember exactly), I got a smoke-related linking error. So I
> > > > tried looking in the makefiles produced by cmake and found out that
> > > > the smoke libraries weren't among the ones included in the linking
> > > > process (I assume because I explicitly told cmake not to build it). I
> > > > then started looking through the options listed by ccmake, including
> > > > the advanced ones, and found a CMAKE_MODULE_LINKER_FLAGS and a
> > > > CMAKE_SHARED_LINKER_FLAGS entries. Setting both of them to -L
> > > > /usr/kde/svn/lib (the directory were smoke is installed) I was able
> > > > to compile correctly korundum.
> > >
> > > When it's just a matter of adding -L /usr/kde/svn/lib, then the correct
> > > way to proceed is adding a link_directories( /usr/kde/svn/lib/ )
> > > command to CMakeLists.txt.
> > > Ideally one should write FindSmokeQt.cmake, FindSmokeKDE.cmake,
> > > FindSmokeQtWebKit.cmake etc. and install them together with the smoke
> > > libs. You could then simply find_package (SmokeQt REQUIRED) and
> > > everything should be set up correctly. Without that, a hardcoded
> > > link_directories command as explained above should be sufficient.
> >
> > Thanks for your answer. However, given how Gentoo works, what you're
> > suggesting would require to create a patch for the CMakeLists.txt file,
> > while my solution would simply mean passing a flag to the call to cmake,
> > which would be quite easier (and, in my opinion, cleaner). Is there any
> > drawback to this approach?
>
> If it links, there's no drawback. But the cleaner solution really is
> creating a patch, since CMAKE_MODULE_LINKER_FLAGS and
> CMAKE_SHARED_LINKER_FLAGS are not to be used directly, afaik. They're set
> by link_directories and
> target_link_libraries and that's how you should do it. But if it works, I
> don't see a problem here, except for the cleanness of the procedure.

Thanks for the explaination. With those two variables set, everything linked 
successfully. However, if you say this is not how they should be used, I'll 
follow your advice and modify CMakeLists.txt.

Thanks again

Stefano




More information about the Kde-bindings mailing list