On 2016-01-27 14:59, René J. V. Bertin wrote:
There is no explicit CMAKE_INSTALL_RPATH reconfiguration in QtCurve's
CMake
files, so whatever happens is handled automatically, somewhere. That
somewhere
must be in a KF5 cmake file and not one from Qt itself.
KDECMakeSettings.cmake
seems the most likely candidate, and I'd like to ask some questions
about that
file (hoping this is the right place):
1) I see it does `set(CMAKE_INSTALL_RPATH "${_abs_LIB_INSTALL_DIR}")` .
Shouldn't that be `set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_RPATH;
${_abs_LIB_INSTALL_DIR}"), IOW, shouldn't the additional path be
appended (or
prepended...) to the existing RPATH?!
Quite possibly. I suspect the original author didn't account for the
possibility that someone might want to explicitly specify such a path on
the command line.
2) I did find that I have to set
`-DCMAKE_INSTALL_RPATH="/opt/local/lib/x86_64-
linux-gnu\;/opt/local/lib"` on Linux, presumably because Kubuntu's
multi-arch
configuration is detected. Why does the build system not pick that fact
up,
while it clearly does pick up the non-standard Qt library locations?
Maybe it
considers /opt/local/lib/x86_64-linux-gnu a system location because
cmake itself
is installed under /opt/local ?
The mechanism by which packages are found is completely independent, and
(more or less) involves CMake searching the filesystem recursively for
*Config.cmake files, which then tell it where to find, say, Qt. Our
RPATH handling logic isn't clever enough to account for found packages,
though.
It's possible that CMake could figure out the necessary RPATH settings
itself. It's worth re-visiting this, I think.
3) If KDECMakeSettings.cmake alters CMAKE_INSTALL_RPATH, is that
supposed to be
visible in CMakeCache.txt ? That cache file only shows the setting I
passed on
the commandline. If that means KDECMakeSettings.cmake doesn't do its
job in my
set-up, then the mystery stands how KF5 builds manage to add
/opt/local/libexec/qt5/lib to the rpath ...
No. The fact that it is in the CMakeCache.txt at all is just an artifact
of you passing it on the command line. The lookup sequence for variables
is to check runtime-set variables, and only fall back to the cache if a
variable hasn't been set at runtime.
Alex
_______________________________________________
Kde-buildsystem mailing list
[email protected]
https://mail.kde.org/mailman/listinfo/kde-buildsystem