CMake - プリプロセッサ
ナビゲーションに移動
検索に移動
概要
プリプロセッサの定義
特定のビルドタイプに基づいて、プリプロセッサ定義を設定することがよくある。
例えば、デバッグビルドの場合にプリプロセッサマクロとして_DEBUGを定義する場合、
target_compile_definitions
コマンドを使用して、その定義をデバッグビルドにのみ適用するように指定する。
# デバッグビルドの場合にのみ_DEBUGを定義する
target_compile_definitions(<プロジェクト名> PRIVATE
$<$<CONFIG:Debug>:_DEBUG>
)
上記の例では、$<CONFIG:Debug>ジェネレータ式を使用している。
これは、現在のビルドがデバッグビルド(Debug)である場合に_DEBUGマクロを定義するものである。
target_compile_definitions
の第2引数にPRIVATE
キーワードを使用しているため、このプリプロセッサはこのターゲットにのみ適用されて、他のターゲットには影響を与えない。
もし、ライブラリ等で他のターゲットにもこの定義を適用する場合は、PUBLIC
またはINTERFACE
キーワードを使用する。
この機能を使用することにより、デバッグビルドとリリースビルドで異なるプリプロセッサマクロを簡単に管理できる。
- PUBLIC
- 定義がそのターゲット自身とそれをリンクするターゲットの両方に適用される。
- INTERFACE
- 定義がそのターゲットをリンクする他のターゲットにのみ適用される。