2013-02-20 108 views
18

當使用CMake構建開源項目(在我的情況下,它是檸檬圖庫)時,當我嘗試通過-DBUILD_SHARED_LIBS=1構建共享庫時發生此錯誤:CMake錯誤:共享庫目標沒有庫目標的目標

TARGETS given no LIBRARY DESTINATION for shared library target 

這個錯誤來自哪裏,我該如何解決?

回答

25

在我的CMakeLists.txt中,我的INSTALL命令沒有LIBRARY參數。

從此改變:

INSTALL(
    TARGETS lemon 
    ARCHIVE DESTINATION lib 
    COMPONENT library 
) 

這樣:

INSTALL(
    TARGETS lemon 
    ARCHIVE DESTINATION lib 
    LIBRARY DESTINATION lib # <-- Add this line 
    COMPONENT library 
) 

固定我的問題。

7

我得到這個......出現這種情況的另一個原因是,當你創建一個共享庫

add_library($ {NAME} SHARED源)

那麼當到達的CMake在Windows平臺上安裝命令,它抱怨這些錯誤,解決辦法是使用RUNTIME而不是LIBRARY,就像

if(WIN32) 
    install(TARGETS ${NAME} 
    RUNTIME DESTINATION path) 
else() 
    install(TARGETS ${NAME} 
    LIBRARY DESTINATION path) 
endif() 
+1

我想你的意思是「'RUNTIME'而不是'LIBRARY'」。 – 2016-06-09 15:42:04

+0

對,糾正。 – 2016-06-09 22:49:37

+1

你的例子中'path'的兩個用法是不同的嗎?如果沒有,您可以使用 'install(TARGETS $ {NAME} 運行時目的地路徑 LIBRARY DESTINATION路徑 ) – Unapiedra 2016-10-26 23:30:49

相關問題