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

Reply via email to