add_libraryのメモ
メモ代わりの参考訳
add_library(<name> [STATIC | SHARED | MODULE] [EXCLUDE_FROM_ALL] source1 [source2 ...])
<name>
はターゲットの論理名で、プロジェクト内でユニークでなければならない。
STATIC
は静的ライブラリである。SHARED
は実行時に動的にリンクされる。MOULDE
は動的にdlopenのような関数を用いてロードされる。プラグインなどで使用される。
ライブラリのタイプを指定しない場合は、 BUILD_SHARED_LIBS
が ON
ならば、 SHARED
に、 OFFなら STATIC
になる。
SHARED
と MODULE
は POSITION_INDEPENDENT_CODE
が自動的に True
に設定される。
なお、 STATIC
の同設定は CMAKE_POSITION_INDEPENDENT_CODE
の設定値で自動的に初期化される。
ビルド結果は、ソースツリーに関連するビルドツリーに出力される。
`LIBRARY_OUTPUT_DIRECTORY
と RUNTIME_OUTPUT_DIRECTORY
の2つのプロパティで出力先を制御できる。
OUTPUT_NAME
で出力されるファイル名の <name>
の部分を変更できる。
EXCLUDE_FROM_ALL
を引数として与えると、ALLターゲットから除外できる。
オブジェクトライブラリ
add_library(<name> OBJECT <source1> [<source2> ...])
以下のように他のターゲットとリンクする。以下では other ターゲットに OBJECT
指定してビルドした objlib
をリンクしている。
add_library(other $<TARGET_OBJECTS:objlib>)
ライブラリの別名
add_library(<name> ALIAS <target>)