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?

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top