「CMake - プリプロセッサ」の版間の差分

ナビゲーションに移動 検索に移動
(ページの作成:「== 概要 == <br><br> == プリプロセッサの定義 == 特定のビルドタイプに基づいて、プリプロセッサ定義を設定することがよくある。<br> <br> 例えば、デバッグビルドの場合にプリプロセッサマクロとして_DEBUGを定義する場合、<br> <code>target_compile_definitions</code>コマンドを使用して、その定義をデバッグビルドにのみ適用するように指定する。<br> <syntaxhighli…」)
 
26行目: 26行目:
* INTERFACE
* INTERFACE
*: 定義がそのターゲットをリンクする他のターゲットにのみ適用される。
*: 定義がそのターゲットをリンクする他のターゲットにのみ適用される。
<br><br>
== 使用例 ==
==== バージョンによりプリプロセッサを定義する ====
バージョンが特定の値未満の場合に特定のプリプロセッサを定義する場合、<br>
CMakeのバージョン比較機能と<code>target_compile_definitions</code>コマンドを組み合わせて使用する。<br>
<br>
# まず、プロジェクトのバージョンを定義する。
# 次に、条件分岐でバージョンを比較して、条件に合致する場合にのみプリプロセッサを定義する。
<syntaxhighlight lang="cmake">
project(MyProject VERSION 0.1.0)
# ターゲットを定義
add_executable(MyProject
    main.cpp
)
# バージョンを比較して、条件に合致する場合はプリプロセッサを定義
# 以下の例では、バージョンが0.1.0未満かどうかを確認して、合致している場合はMY_VERSION_BELOW_0_1_0プリプロセッサを定義
if(PROJECT_VERSION VERSION_LESS 0.1.0)
    target_compile_definitions(MyProject PRIVATE
      MY_VERSION_BELOW_0_1_0
    )
endif()
</syntaxhighlight>
<br>
上記のようなプリプロセッサは、プリプロセッサディレクティブを使用して条件付きで特定のソースコードを含めたり除外する場合に使用できる。<br>
例えば、C++のソースコードにおいて、以下に示すように使用することができる。<br>
<br>
この方法により、異なるバージョンのプロジェクトに対して、条件付きでソースコードをコンパイルする複雑なロジックが実装できる。<br>
<syntaxhighlight lang="c++">
#ifdef MY_VERSION_BELOW_0_1_0
    // バージョンが0.1.0未満の場合にのみコンパイルされるコード
#endif
</syntaxhighlight>
<br><br>
<br><br>


案内メニュー