2017-04-04 11 views
0

私はCMakeで簡単なことをしようとしていますが、私は問題にぶち当たっています。CMakeアプリケーションとDLLの両方が同じ静的ライブラリにリンクしていますか?

私は静的ライブラリにリンクするDLLにリンクする必要のあるアプリケーションを持っています。これらのモジュールは、それぞれ独自のCMakeLists.txtファイルを持つフォルダ内にあります。

add_subdirectory()を使用してプロジェクト階層を構築すると、DLL add_subdirectory()がStaticライブラリ(およびStaticへのリンク)を追加し、DLLプロジェクトにadd_subdirectory()が追加されます。

最後のプロジェクトでCMakeはDLLへのリンクのみをCMakeLists.txtファイルに明示的に求めていますが、DLLと静的ライブラリの両方にAppリンクを作成します。明らかに、もしDLLがすでにそうしているのであれば、私はそのアプリケーションをStaticにリンクさせたくない。

私はそれがadd_subdirectory()と関係があると思われますが、これを修正する方法はわかりません。誰かが私が間違っていることを指摘してくれますか?

答えて

0

デフォルトでは、「library1」の「library2」へのリンケージはであり、は「library1」のすべてのユーザー(アプリケーションなど)に伝播します。これは、 "library2"がSHAREDまたはSTATICの場合にいつでも実行されます。抑圧連携伝播用の

PRIVATEリンク:

target_link_libraries(library1 PRIVATE library2) 
+0

ありがとうございました!私はそれを試してみて、それが動作することを確認するとすぐにあなたの答えを受け入れます。 (現在Afk) – bitwise

+0

パーフェクト!それがまさに私が必要としていたものです。 – bitwise

関連する問題