2012-06-07 77 views
4

這裏是我的嘗試如何爲庫編寫cmake安裝?

IF (NOT WIN32) 
    #INSTALL_TARGETS(${LIB_INSTALL_DIR} ${tinyscheme-nix_BINARY_DIR}/libtinyscheme.so) 
    #INSTALL(TARGETS ${tinyscheme-nix_BINARY_DIR}/libtinyscheme.so DESTINATION ${LIB_INSTALL_DIR}) 
ENDIF() 

兩種變體都是錯誤的。我想要的是將libtinyscheme.so從$ {tinyscheme-nix_BINARY_DIR}移動到/ lib或/ lib64,基本上我認爲$ {LIB_INSTALL_DIR}可以處理它。

那麼我該怎麼做呢?我的錯誤在哪裏?

回答

4

您可能需要FILES版本install而不是TARGETS版本。

TARGETS版本的install用於實際的CMake目標,這些CMake目標已經使用例如, add_library。在這種情況下,您將通過add_library命令中指定的名稱來引用目標,而不是其完整路徑。

因此,在您的第二條命令中將TARGETS替換爲FILES將成爲我認爲的方式。

有關install命令的全部細節,運行:

cmake --help-command install 
+1

我看,好像LIB_INSTALL_DIR,因爲我希望它 – Cynede

+2

@Sholy'install'通常應該只是指定相對路徑不起作用[ '$ {CMAKE_INSTALL_PREFIX}'](http://www.cmake.org/cmake/help/v2.8.8/cmake.html#variable:CMAKE_INSTALL_PREFIX),所以如果您將'$ {LIB_INSTALL_DIR}'設置爲「lib」或「lib64」,並將'$ {CMAKE_INSTALL_PREFIX}'設置爲其默認值,則該庫將以/ usr/local/lib或/ usr/local/lib64結尾。 – Fraser

+0

@Fraser你的評論表明了一些深刻的cmake見解,但是我還有一些關於'$ {LIB_INSTALL_DIR}'的問題,我把它放在這裏(http://stackoverflow.com/q/36723588/258418)。一些進一步的見解將非常感謝。 – ted