2013-02-20 12 views
18

CMakeでオープンソースプロジェクトをビルドすると(私の場合はレモングラフライブラリでした)、-DBUILD_SHARED_LIBS=1CMakeエラー:共有ライブラリのターゲットにLIBRARY DESTINATIONが指定されていないターゲット

で共有ライブラリをビルドしようとしましたが、
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プラットフォームにインストールするコマンドに到達するとき、それを得ましたこれらのエラーが表示されたら解決策はLIBRARYの代わりにRUNTIMEを使用することです。

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

「LIBRARY」ではなく「RUNTIME」を意味すると思います。 –

+0

右に修正しました。 –

+1

あなたの例の 'path'の2つの使用法は異なっていますか?そうでない場合は と同じ効果を達成することができます 'install(TARGETS $ {NAME} RUNTIME DESTINATIONパス ライブラリ宛先パス )' – Unapiedra

関連する問題