1. ホーム
  2. static

[解決済み] CMakeで静的ライブラリと共有ライブラリを同時にビルドさせることは可能でしょうか?

2022-04-25 19:40:58

質問

同じソース、すべてです。ただ、静的バージョンと共有バージョンの両方が欲しいです。 簡単にできますか?

解決方法は?

はい、とても簡単です。 add_library"コマンドを2つ使えばいいだけです。

add_library(MyLib SHARED source1.c source2.c)
add_library(MyLibStatic STATIC source1.c source2.c)

ソースファイルがたくさんある場合でも、ソースの一覧を Cmake という変数があるので、やはり簡単です。

Windows では、共有と静的の両方に ".lib" ファイルがあるため、おそらくそれぞれのライブラリに異なる名前を付ける必要があります。 しかし、LinuxやMacでは、両方のライブラリを同じ名前にすることもできます(例. libMyLib.alibMyLib.so ):

set_target_properties(MyLibStatic PROPERTIES OUTPUT_NAME MyLib)

しかし、ライブラリのスタティック版とダイナミック版を同じ名前にすることはお勧めしません。 なぜなら、ライブラリにリンクするツールのコンパイル時に、スタティック・リンクとダイナミック・リンクの選択が容易になるからです。 通常、私は次のような名前を選びます。 libMyLib.so (共有)と libMyLib_static.a (静的)です。 (linuxではこのような名前になります)。