Alexander Neundorf wrote: > On Wednesday 08 March 2006 15:23, Brad King wrote: >>OSX does not have RPATHs. You will need to use the INSTALL_NAME_DIR >>target property on the shared libraries to get this working. > > How does INSTALL_NAME_DIR work ? The same as RPATH ? Is it also a list of > directories ? If it is used on e.g. libDCOP.dylib, how does this help > dcopidl2ccp in finding libDCOP.dylib ?
It sets the directory portion of the "install_name" of a shared library. This stores for example in libDCOP.dylib the full path to the library. When dcopidl2cpp links to the library it copies this full path as a library to load. At runtime the dynamic loader searches for the libraries using the "install_name"s stored in the executable, one for each library. If the install_name is a full path then it is used directly. If it is a relative path it is searched relative to each entry of DYLD_LIBRARY_PATH. It may also contain a keyword like "@executable_path/../lib/libDCOP.dylib". CMake by default sets the install_name of a library in the build tree to be the full path to its build tree location. When installing targets CMake uses the command "install_name_tool" to change the directory part (not the filename) of the install_name of each target to that specified by the target's INSTALL_NAME_DIR target property. For each library that an executable links it also changes the executable's copy of that library's install_name so that it may be found in the installed location. Basically you just have to set the INSTALL_NAME_DIR target property of a library to the install-tree location of that library. If all the KDE libraries install to the same place then you can just set CMAKE_INSTALL_NAME_DIR to that location at the top of the tree and everything will just work. Thanks to install_name_tool no relinking is needed between the built and installed binaries. -Brad _______________________________________________ Kde-buildsystem mailing list [email protected] https://mail.kde.org/mailman/listinfo/kde-buildsystem
