13,007
回編集
224行目: | 224行目: | ||
このような場合、<code>target_link_libraries</code>コマンドで使用するターゲット名は、<br> | このような場合、<code>target_link_libraries</code>コマンドで使用するターゲット名は、<br> | ||
<code>target_link_libraries</code>コマンドが呼び出されている同じディレクトリにおいて、<code>add_executable</code>コマンドまたは<code>add_library</code>コマンドにより定義されている必要がある。<br> | <code>target_link_libraries</code>コマンドが呼び出されている同じディレクトリにおいて、<code>add_executable</code>コマンドまたは<code>add_library</code>コマンドにより定義されている必要がある。<br> | ||
<br><br> | |||
== 非ターゲットをリンクする (target_link_librariesコマンド) == | |||
<code>target_link_libraries</code>コマンドは、CMakeのターゲット以外にも、以下に示すものを指定することが可能である。<br> | |||
<br> | |||
* ライブラリファイルへのフルパス | |||
*: CMakeはそのライブラリファイルをリンカコマンドに追加する。 | |||
*: ライブラリファイルが変更された場合、CMakeはその変更を検出して、ターゲットを再リンクする。 | |||
*: CMake 3.3以降では、リンカコマンドは指定されたフルパスを使用するが、CMake 3.2以前では、CMakeが代わりにライブラリを検索するようリンカに要求する場合がある。 | |||
*: (例. /usr/lib/libfoo.soファイルを-lfooに置換する等) | |||
* 単純なライブラリ名 | |||
*: パスなしでライブラリ名だけを指定する場合、リンカコマンドはそのライブラリを検索する。 | |||
*: (例えば、プラットフォームによって、fooは-lfoo、または、foo.libになる) | |||
* リンクフラグ | |||
*: 特殊なケースとして、-lや-framework以外のハイフンで始まる項目は、リンカコマンドに追加されるフラグとして扱われる。 | |||
*: <br> | |||
*: ただし、これらは<code>PRIVATE</code>項目にのみ使用するように警告している。 | |||
*: <code>PUBLIC</code>や<code>INTERFACE</code>として定義する場合は、他のターゲットに引き継がれてしまい、必ずしも安全とは言えないからである。 | |||
<br> | |||
上記に加え、項目の前に<code>debug</code>、<code>optimized</code>、<code>general</code>のいずれかのオプションを付加することができる。<br> | |||
これらのオプションは、ビルドがデバッグビルドとして設定されているかどうかに基づいて、それに続く項目が含まれるべき時をさらに絞り込むことである。<br> | |||
<u>ただし、これらのオプションは、同様の機能をより明確で柔軟かつ堅牢な方法が別に存在するため、現在は使用しない方がよい。</u><br> | |||
* debugオプション | |||
*: 項目の前にdebugオプションを付加する場合、そのビルドがデバッグビルドである場合にのみ追加される。 | |||
* optimizedオプション | |||
*: 項目の前にoptimizedオプションを付加する場合、ビルドがデバッグビルドでない場合のみ追加される。 | |||
* generalオプション | |||
*: 項目の前にgeneralオプションを付加する場合、全てのビルド構成に対して項目を追加するように指定する。 | |||
<br><br> | <br><br> | ||