在Linux上構建CMake後(但在安裝之前),所有鏈接庫都添加到最終可執行文件的RPATH中。預先安裝到RPATH中
但是,我想預先$ORIGIN/../lib:
到這個RPATH。
到目前爲止,我只能夠取代的RPATH,這不是我想要的東西:我想ld.so
先在../lib
看。這是我目前做的:
set_target_properties(foo PROPERTIES
BUILD_WITH_INSTALL_RPATH TRUE
INSTALL_RPATH "\$ORIGIN/../lib:...")
雖然這個工作,它缺少的是不是我的構建樹的一部分,一些額外的第三方庫,誰不位於系統目錄。
做chrpath -l foo
給了我上面完全一樣的INSTALL_RPATH
。如果我沒有設置這些屬性,我會得到很多DSO位置,例如RPATH=/bar/baz/:/quux/
等(我想預先考慮的那個)。
我使用get_property(_existing_rpath foo INSTALL_RPATH)
嘗試過,但是這給了我一個空字符串
我在https://cmake.org/Wiki/CMake_RPATH_handling閱讀提示,發現在「CMake的錯誤」是
至少在CMake的2.6。 4 RHEL5,用於 的man cmake命令INSTALL_RPATH_USE_LINK_PATH假定此設置將附加 指向指定的任何CMAKE_INSTALL_RPATH內容的鏈接路徑。不過, 這個版本,啓用INSTALL_RPATH_USE_LINK_PATH將取代它。
哦,不是如此肯定更多:只是驗證了這一點上CMake的 2.8.0,現在在都版本它在cmake_install.cmake列表正確的改變。這個bug可能是由於以前沒有執行每個目標安裝(),或者可能是由於CMake RPATH相關變量中的其他更改導致的。
順便說一句,我只得到一個工作RPATH爲建文件,在其運行安裝之前感興趣。我沒有正確配置安裝(添加安裝目標等)。我需要研究這部分工作嗎?