[解決済み] 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.a
と
libMyLib.so
):
set_target_properties(MyLibStatic PROPERTIES OUTPUT_NAME MyLib)
しかし、ライブラリのスタティック版とダイナミック版を同じ名前にすることはお勧めしません。 なぜなら、ライブラリにリンクするツールのコンパイル時に、スタティック・リンクとダイナミック・リンクの選択が容易になるからです。 通常、私は次のような名前を選びます。
libMyLib.so
(共有)と
libMyLib_static.a
(静的)です。 (linuxではこのような名前になります)。
関連
-
[解決済み] Swiftのstatic funcとclass funcの違いは何ですか?
-
[解決済み] 静的クラスとシングルトンパターンの違い?
-
[解決済み] 静的な HTML ページにファビコンを追加する
-
[解決済み] 静的変数が悪とされるのはなぜですか?
-
[解決済み] 既存の静的クラスに拡張メソッドを追加することはできますか?
-
[解決済み] CMakeの出力をクリアするための'cmake clean'コマンドを探しています。
-
[解決済み】静的初期化コードブロックと非静的初期化コードブロックの違いは何ですか?
-
[解決済み] cmakeで共有ライブラリを作成する方法は?
-
[解決済み] CMakeで静的ライブラリと共有ライブラリを同時にビルドさせることは可能でしょうか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン