如何在CMAKE中设置RPATH?

Śub*_*ham 12 cmake

我希望在本地构建和安装软件$HOME/.local/而不是系统范围的/usr/文件夹.该软件使用CMAKE进行编译.

安装后,软件二进制文件安装在$HOME/.local/bin/库中$HOME/.local/lib/.因此,当我尝试运行该程序时,它会抛出一个错误,即找不到所需的库(顺便说一句,它存在于其中$HOME/.local/lib/).

如果我设置为$LD_LIBRARY_PATH,该程序工作正常$HOME/.local/lib.但我不想要这个.因此,我想知道如何在使用CMAKE编译软件时指定RPATH变量(指向$HOME/.local/lib).

请帮助.

Bru*_*evy 11

我在CMakefile中使用以下两行

set(CMAKE_MACOSX_RPATH 1)
set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
Run Code Online (Sandbox Code Playgroud)

(只有在使用MacOSX时才需要第一个)

  • `CMAKE_INSTALL_RPATH` 是一个预定义的列表,因此我可以看到最好执行 `list( APPEND CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/lib )` 的场景。如果你 `include( GNUInstallDirs )` 你也可以 `list( APPEND CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_LIBDIR} )`。不过,我是 CMake 新手,我刚刚开始接触它,所以如果有人发现上述问题,请告诉我。 (9认同)
  • @PfunnyGuy 感谢您的“列表(附加...)”建议。也许把它作为替代答案? (2认同)

Pfu*_*Guy 8

CMAKE_INSTALL_RPATH是一个预定义的列表,所以我可以看到最好做的场景

list( APPEND CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/lib )
Run Code Online (Sandbox Code Playgroud)

如果你include( GNUInstallDirs )也可以

list( APPEND CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_LIBDIR} )
Run Code Online (Sandbox Code Playgroud)

不过,我是 CMake 新手,所以如果有人发现上述问题,请告诉我。