13,009
回編集
(→変数) |
|||
243行目: | 243行目: | ||
<br><br> | <br><br> | ||
== | == 非ターゲットのリンク (target_link_librariesコマンド) == | ||
<code>target_link_libraries</code>コマンドを呼び出す時は、常に、<code>PRIVATE</code>、<code>PUBLIC</code>、<code>INTERFACE</code>オプションを指定する。<br> | <code>target_link_libraries</code>コマンドを呼び出す時は、常に、<code>PRIVATE</code>、<code>PUBLIC</code>、<code>INTERFACE</code>オプションを指定する。<br> | ||
<br> | <br> | ||
271行目: | 271行目: | ||
* generalオプション | * generalオプション | ||
*: 項目の前にgeneralオプションを付加する場合、全てのビルド構成に対して項目を追加するように指定する。 | *: 項目の前にgeneralオプションを付加する場合、全てのビルド構成に対して項目を追加するように指定する。 | ||
<br><br> | |||
== 非ターゲットのインクルード (target_include_directoriesコマンド) == | |||
<code>find_package</code>コマンドは、<code>include</code>コマンドで手動で行う設定を、<code>REQUIRED</code>オプション等を使用して自動で行うことができる。<br> | |||
find_package(PkgConfig) | |||
<br> | |||
<code>find_package</code>コマンドは、<code>pkg_search_module</code>コマンドよりも柔軟でより多くのオプションが存在する。<br> | |||
また、CMakeには豊富なパッケージ定義が付属しており、パッケージ管理システムからインストールしたソフトウェアは/usr/share/cmake/Modules/Find*.cmakeファイルにある。<br> | |||
<br> | |||
<code>target_include_directories(<ターゲット名> PUBLIC ...)</code>コマンドは、<br> | |||
<ターゲット名>を使用する全てのターゲットにおいて、自動的にインクルードディレクトリが使用されるようになる。<br> | |||
ただし、CMakeLists.txtファイル内にターゲットにのみ有効であり、<code>pkg_search_module</code>コマンドで取得したライブラリに対しては機能しない。<br> | |||
<syntaxhighlight lang="cmake"> | |||
find_package(PkgConfig REQUIRED) | |||
pkg_check_modules(<任意の変数名> <.pcファイル内の[Name]セクション名 例. sdl2> REQUIRED IMPORTED_TARGET) | |||
# ...略 | |||
target_link_libraries(<ターゲット名> | |||
${<任意の変数名>_LIBRARIES} | |||
) | |||
target_include_directories(<ターゲット名> PUBLIC | |||
${<任意の変数名>_INCLUDE_DIRS} | |||
) | |||
target_compile_options(<ターゲット名> PUBLIC | |||
${<任意の変数名>_CFLAGS} | |||
# または | |||
${<任意の変数名>_CFLAGS_OTHER} | |||
) | |||
</syntaxhighlight> | |||
<br><br> | <br><br> | ||