私はちょっと混乱した質問があります。私はスタティック(libthird.a
)と共有のpic形式(libthird.so
)になるサードパーティの依存関係を持っています。サードパーティのライブラリと異なるリンケージを使用した推移的な依存性
私はライブラリutil
を持っています。これはlibthird
に依存しています。
そして私は、静的libthird
をリンクしたいutil
に依存するアプリケーションを持っている、と私はutil
に依存して動的にlibthird
リンクする必要があり、その生産する必要があるいくつかの共有ライブラリを持っています。
add_library(third INTERFACE)
target_link_libraries(third INTERFACE /path/to/libthird.a)
add_library(third_shared INTERFACE)
target_link_libraries(third_shared INTERFACE /path/to/libthird.so)
add_library(util ${UTIL_SOURCES})
add_library(util_shared ${UTIL_SOURCES}) # same sources again!!
target_link_libraries(util PUBLIC third)
target_link_libraries(util_shared PUBLIC third_shared)
add_executable(some_app ...)
target_link_libraries(some_app PRIVATE util)
add_library(some_shared_object ...)
target_link_libraries(some_shared_object PUBLIC util_shared)
これは動作します:
私の現在(作業)のアプローチは、以下のようなものです。しかし、私はutil
をビルドしています(そして、実際には、他の半ダースのライブラリなど)... 2回...異なるリンカの依存関係を取得するだけです。これをcmakeでやってもらうのが賢明な方法はありますか?
util
がthird
に依存しないので、私はちょうどtarget_link_libraries()
トップレベルsome_app
とsome_shared_object
に、私は、間違った順序で放出されるリンカのフラグを取得する場合。
util_sharedをutillの周りに薄いラッパーにすることは可能でしょうか、あるいは本当に-fPICなしで静的util libに接続していますか? –