Question
Je crée un package avec cmake
J'ai la structure suivante
bin/
bin1
lib/
lib1
lib2
Où lib1 et lib2 sont des bibliothèques dynamiques externes.Comment puis-je configurer RPATH pour qu'il se lie automatiquement avec lib1 et lib2?
La solution
Je me suis aussi occupé de cmake à ce sujet.Cmake utilise CMAKE_SKIP_BUILD_RPATH pour la liaison au moment de la génération et CMAKE_INSTALL_RPATH pour définir le rpath utilisé lorsque la cible d'installation est générée.cmake a de bonnes informations sur l'utilisation de son mécanisme rpath: http://www.cmake.org/Wiki/CMake_RPATH_handling
Une autre méthode consiste à utiliser ldconfig.Je remarque que lorsque vous construisez svn (1.6.17), make install target appelle ldconfig pour définir rpath.
Jetez un œil à $ ORIGIN car vous en aurez besoin dans votre rpath pour le garder relatif au binaire plutôt que relatif à $ PWD.
Construire un simple(hello-world-esque) exemple d'utilisation de l'option -rpath de ld avec $ ORIGIN
Autres conseils
AFAIK, CMake ajoute automatiquement des rpaths à toutes les cibles, que vous liez avec target_link_libraries ().
Pour le désactiver, il existe une option CMAKE_SKIP_RPATH
.