KDE and MADDE
Alexander Neundorf
neundorf at kde.org
Sun Nov 20 17:05:42 UTC 2011
On Sunday 20 November 2011, Laszlo Papp wrote:
> > Next is RPATH. Are you building with RPATH, or did you disable RPATH ?
> > With RPATH will be hard.
> > When linking something against
> > /home/apol/QtSdk/Madde/sysroots/.../usr/lib/libnepomukquery.so.4.7.0,
> > cmake will figure out that some executable needs
> > "/home/apol/QtSdk/Madde/sysroots/.../usr/lib/" as RPATH.
> > This would be the correct RPATH from the POV of the (build)host, but
> > completely wrong for the target host.
>
> I am not getting it, but this might be because I have some
> misunderstand on my side. I have an example here:
> http://community.kde.org/KDE_Mobile/Harmattan#Packaging_your_KDE_Mobile_app
> lication_with_shared_libraries
That page says "-DCMAKE_PREFIX_INSTALL=/usr"
Is that a typo, or did somebody somewhere add a variable CMAKE_PREFIX_INSTALL
?
I would expect it should be CMAKE_INSTALL_PREFIX ?
>
> All I do on the my computer is using "-DCMAKE_INSTALL_RPATH=/opt/test/lib".
Oh, you are setting this from the outside.
Interesting, I never tried that.
> On the device after my deploying:
> ldd -r /usr/bin/tutorial1
> libkdecore.so.5 => /opt/test/lib/libkdecore.so.5 (0x3aad3000)
> libQtCore.so.4 => /usr/lib/libQtCore.so.4 (0x3ad95000)
> ...
>
> It seems to use the proper one even if I had the
> /usr/lib/libkdecore.so.5 during the compilation.
In the not-yet-installed binaries you get the BUILD_RPATH, which is complete
and which is computed automatically by cmake (except you set
CMAKE_SKIP_BUILD_RPATH to TRUE).
During installation, the BUILD_RPATH is replaced with the INSTALL_RPATH.
This consists of the cmake variable CMAKE_INSTALL_RPATH, and an automatically
computed part if CMAKE_INSTALL_RPATH_USE_LINK_PATH is set to TRUE (we do this,
see FindKDE4Internal.cmake, search for RPATH).
CMAKE_INSTALL_RPATH is in your case left untouched in FindKDE4Internal.cmake,
you set it from the outside, so this is what will be the install RPATH in the
end.
Look at FindKDE4Internal.cmake and KDE4Macros.cmake, there is only one place
where RPATH settings are set, this is in FindKDE4Internal.cmake, and it is
also commented.
The macro KDE4_HANDLE_RPATH_FOR_EXECUTABLE() doesn't actually do anything
RPATH-related anymore, nowadays it only creates the wrapper shell
scripts/batch files for running executables from the build tree if RPATH is
completely disabled.
Alex
More information about the Kde-buildsystem
mailing list