そこで、2つの静的ライブラリから共有ライブラリを構築しています。
この回答-Wl,--whole-archive
は、静的ライブラリの前、後に挿入する方法を示してい-Wl,--no-whole-archive
ます。
したがって、共有ライブラリ用に現在cmakeにあるのは次のとおりです。
add_library(wittyPlus SHARED empty.cpp)
target_link_libraries(wittyPlus
${wtdbosqlite}
${WT_LIBRARIES}
${DB_LIBRARIES}
${Boost_LIBRARIES}
app models
)
-Wl,--whole-archive
したがって、必要なのは、前app
とmodels
後を追加することです-Wl,--no-whole-archive
(これにより、標準ライブラリのインポートが共有ライブラリによってエクスポートされなくなります)。
CMakeでこれを行う最も簡単な方法は何ですか?
追加:それで、私は可能な限り標準のcmakeのものを使用したいと思います。そうすれば、CMakeはプラットフォームでサポートされていないコンパイラ定義を親切に削除するので、Windowsビルドのために余分な作業を行う必要はありません。構築されました。