Cmake では同名で静的ライブラリと動的ライブラリを作成できない2023年05月07日 13時17分03秒

Unix では動的ライブラリと静的ライブラリは同一名でインストールされる事が多い。abc ライブラリだと、リンカーとその命名規則に寄り libabc.so と libabc.a でインストールされることになる。

Cmake では add_library を使って、ライブラリの設定をすr。その時に渡す一つ目の引数がそのままライブラリの名前になる。そして、二つ目にライブラリの種類になる。SHARED で動的ライブラリを、STATIC 静的ライブラリを作る。

例えば、

add_library(abc SHARED <ファイル名>)
で、libabc.so を作成できる。

ここで、問題なのが、両方を作るコマンドがないこと。OBJECT 型を一度指定して、その OBJECT 型のファイルを使って SHARED と STATIC を指定し、動的ライブラリと静的ライブラリを作ることは出来る。しかし、add_library を複数指定する都合で、同じ名前は使えない。