cmake:如何在安装过程中保留库的路径

时间:2016-02-02 15:28:24

标签: cmake install shared-libraries ldd

我有一些可执行文件,它依赖于在源文件中设置相对路径的配置文件。

针对库的可执行文件链接,该库在同一项目中创建。

我希望实现的是安装后可执行的可执行文件,即安装会将可执行文件,配置文件和库复制到合适的位置,并且可执行文件将链接到库。 / p>

我现在拥有的东西:

install(TARGETS ${test_executables}  ${PROJECT_NAME} 
    RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin
    ARCHIVE DESTINATION ${CMAKE_INSTALL_PREFIX}/lib
    LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/plot" 
    DESTINATION .)       

$ {PROJECT_NAME}是库,plot是配置文件所在的文件夹。

安装后会发生的事情是所有文件都在安装文件夹中的正确位置,但可执行文件找不到库。

PS:

我之前尝试添加:

set(CMAKE_SKIP_BUILD_RPATH  FALSE)
set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE) # tried also with TRUE
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)                                                
set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/lib)

但这不起作用

1 个答案:

答案 0 :(得分:2)

INSTALL_RPATH target的属性会影响安装的可执行文件的RPATH。此属性在目标创建时设置为变量CMAKE_INSTALL_RPATH 的值

因此,变量CMAKE_INSTALL_RPATH需要在 add_executable()调用才能对目标生效之前设置

大多数全局变量和目标未识别命令仅在目标创建时上影响目标

有一些例外,例如命令include_directories(),它会影响当前目录中创建的所有目标。但在创建目标之前准备好所有内容可能是一种很好的做法。