「CMake - インクルード」の版間の差分

提供:MochiuWiki : SUSE, EC, PCB
ナビゲーションに移動 検索に移動
38行目: 38行目:
     ${<任意の変数名>_CFLAGS_OTHER}
     ${<任意の変数名>_CFLAGS_OTHER}
  )
  )
</syntaxhighlight>
<br><br>
== インクルードパスの指定 ==
インクルードパスを指定する場合、<code>include_directories</code>コマンドを使用する。<br>
<syntaxhighlight lang="cmake">
include_directories(/path/to/include)
</syntaxhighlight>
<br>
<code>include_directories</code>コマンドを複数使用する場合、デフォルトでは、指定したパスは最後尾となる。<br>
ただし、<code>include_directories</code>コマンドに<code>BEFORE</code>オプションを付加した場合は最前となる。<br>
<br>
以下の例では、"-I/path1/to/include -I/path2/to/include"となる。<br>
<syntaxhighlight lang="cmake">
include_directories(/path1/to/include)
include_directories(/path2/to/include)
</syntaxhighlight>
<br>
以下の例では、"-I/path2/to/include -I/path1/to/include" となる。<br>
<syntaxhighlight lang="cmake">
include_directories(/path1/to/include)
include_directories(BEFORE /path2/to/include)
  </syntaxhighlight>
  </syntaxhighlight>
<br><br>
<br><br>

2024年3月22日 (金) 19:42時点における版

概要



非ターゲットのインクルード (target_include_directoriesコマンド)

find_packageコマンドは、includeコマンドで手動で行う設定を、REQUIREDオプション等を使用して自動で行うことができる。

 find_package(PkgConfig)


find_packageコマンドは、pkg_search_moduleコマンドよりも柔軟でより多くのオプションが存在する。
また、CMakeには豊富なパッケージ定義が付属しており、パッケージ管理システムからインストールしたソフトウェアは/usr/share/cmake/Modules/Find*.cmakeファイルにある。

target_include_directories(<ターゲット名> PUBLIC ...)コマンドは、
<ターゲット名>を使用する全てのターゲットにおいて、自動的にインクルードディレクトリが使用されるようになる。

ただし、CMakeLists.txtファイル内のターゲットにのみ有効であり、pkg_search_moduleコマンドで取得したライブラリに対しては機能しない。

 # pkg-configコマンドの使用
 find_package(PkgConfig REQUIRED)
 
 # pkg-configコマンドを使用してライブラリとヘッダファイルを自動的に設定
 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}
 )



インクルードパスの指定

インクルードパスを指定する場合、include_directoriesコマンドを使用する。

 include_directories(/path/to/include)


include_directoriesコマンドを複数使用する場合、デフォルトでは、指定したパスは最後尾となる。
ただし、include_directoriesコマンドにBEFOREオプションを付加した場合は最前となる。

以下の例では、"-I/path1/to/include -I/path2/to/include"となる。

 include_directories(/path1/to/include)
 include_directories(/path2/to/include)


以下の例では、"-I/path2/to/include -I/path1/to/include" となる。

 include_directories(/path1/to/include)
 include_directories(BEFORE /path2/to/include)