メイン アプリケーションの共有ライブラリとして構築している小さなコンポーネントがいくつかあります。liba
との例を使用してみましょうlibb
。それぞれは、次のように独自のサブディレクトリ内に構築されます。
add_library(liba SHARED a.cpp)
次に、ルート プロジェクト フォルダーで、メイン アプリケーションを両方にリンクする必要があります。
include_directories(a)
include_directories(b)
add_executable(dummy dummy.cpp)
target_link_libraries(dummy a b)
CMake はこれで正常に動作し、アプリケーションはコンパイルされますが、リンクに失敗します。問題は、b が a を参照することです。リンク中にライブラリの順序を指定した場合
target_link_libraries(dummy b a)
プログラムは問題なくコンパイルおよびリンクされます
この種のシステムがライブラリのより複雑な相互依存関係を含むようになると、依存関係が非循環的であっても、それは不可能になり始めます。ここでリンク手順を管理するにはどうすればよいですか? CMakeでリンクするライブラリを注文するコツはありますか?