2016-02-02 50 views
0

我有一些可執行文件,它取決於在源文件中設置相對路徑的配置文件。cmake:在安裝過程中如何保留路徑庫

可執行文件鏈接到在同一項目中創建的庫。

我希望能夠實現的目標是在安裝後讓可執行文件開箱即用,即安裝會將可執行文件,配置文件和庫複製到適當的位置,並將可執行文件鏈接到庫。

我暫時什麼:

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是圖書館,情節是其中的配置文件的文件夾。

安裝後會發生什麼情況,即所有文件都位於安裝文件夾的正確位置,但可執行文件未找到該庫。

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) 

但這並沒有工作

+0

'ldd '的輸出是什麼? – Tsyvarev

+0

@Tsyvarev「libamd_clmc_dmp.so =>未找到」,amd_clmc_dmp是在包中編譯的庫 – Vince

+0

Hmm,變量[CMAKE_INSTALL_RPATH](https://cmake.org/cmake/help/v3.0/variable/CMAKE_INSTALL_RPATH.html )在目標創建時**僅影響[INSTALL_RPATH](https://cmake.org/cmake/help/v3.0/prop_tgt/INSTALL_RPATH.html)屬性**。在**'add_executable()'調用之前,您是否設置了'CMAKE_INSTALL_RPATH'變量**? – Tsyvarev

回答

2

這是INSTALL_RPATH目標的屬性影響RPATH上已安裝的可執行文件。此屬性設置爲在目標創建時間處的變量CMAKE_INSTALL_RPATH的值。

因此,變量CMAKE_INSTALL_RPATH需要設置之前add_executable()要求對目標產生影響。


大多數全局變量和目標,不知道命令的創建目標的時間目標只有影響。

也有例外,如命令include_directories(),它會影響在當前目錄中創建的所有目標。但準備在目標創建之前的一切可能是不錯的做法。