web-dev-qa-db-fra.com

Comment peut-on changer LD_LIBRARY_PATH dans CMake?

J'ai une bibliothèque partagée locale qui n'est pas dans $ LD_LIBRARY_PATH. Je veux exécuter mon exécutable, mais comme il ne trouve pas la bibliothèque partagée dans les dossiers système, il génère une "erreur lors du chargement des bibliothèques partagées".

Un correctif possible pour cela consiste à exporter un nouveau LD_LIBRARY_PATH contenant le dossier de la bibliothèque locale.

Comment puis-je exporter automatiquement cette variable d'environnement dans CMake?

20
Daniel Saad

Si votre bibliothèque partagée n'est pas construite dans le même projet CMake de votre exécutable, vous pouvez utiliser la gestion de rake CMake comme ceci:

set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)

Quand vous exécuterez make install, CMake définira automatiquement le chemin d'exécution de votre exécutable vers votre bibliothèque partagée.

Si votre bibliothèque partagée est construite dans le même projet CMake, utilisez ceci:

set(CMAKE_INSTALL_RPATH "/usr/local/lib")
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)

Dans ce cas, vous devez ajouter vous-même le répertoire où votre bibliothèque partagée sera installée sur le chemin d'exécution.

Pour plus d'informations, vous pouvez lire Gestion de rake CMake

5
explo91

Vous pouvez définir le chemin de recherche de la bibliothèque partagée au moment de l'exécution à l'aide de -rpath option de l'éditeur de liens:

SET(CMAKE_EXE_LINKER_FLAGS 
          "${CMAKE_EXE_LINKER_FLAGS} -Wl,-rpath -Wl,/usr/local/lib")
9
hank