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

ナビゲーションに移動 検索に移動
48行目: 48行目:
CMakeのバージョン比較機能と<code>target_compile_definitions</code>コマンドを組み合わせて使用する。<br>
CMakeのバージョン比較機能と<code>target_compile_definitions</code>コマンドを組み合わせて使用する。<br>
<br>
<br>
===== 推奨する方法 =====
# まず、プロジェクトのバージョンを定義する。
# 次に、条件分岐でバージョンを比較して、条件に合致する場合にのみプリプロセッサを定義する。
<br>
以下の例では、メジャーバージョンが0より大きい場合、または、メジャーバージョンが0でマイナーバージョンが2以上の場合に、処理を実行している。<br>
これにより、将来のバージョンに対して柔軟にソースコードを記述することができる。<br>
<syntaxhighlight lang="cmake">
project(MyProject VERSION 0.1.0)
</syntaxhighlight>
<br>
<syntaxhighlight lang="cmake">
target_compile_definitions(MyProject PRIVATE
    -DMYPROJECT_VERSION_MAJOR=${PROJECT_VERSION_MAJOR}
    -DMYPROJECT_VERSION_MINOR=${PROJECT_VERSION_MINOR}
)
</syntaxhighlight>
<br>
<syntaxhighlight lang="c++">
#if MYPROJECT_VERSION_MAJOR > 0 || (MYPROJECT_VERSION_MAJOR == 0 && MYPROJECT_VERSION_MINOR >= 2)
    // MyProject 0.2以降の処理を記述
#endif
</syntaxhighlight>
<br>
===== 非推奨の方法 =====
# まず、プロジェクトのバージョンを定義する。
# まず、プロジェクトのバージョンを定義する。
# 次に、条件分岐でバージョンを比較して、条件に合致する場合にのみプリプロセッサを定義する。
# 次に、条件分岐でバージョンを比較して、条件に合致する場合にのみプリプロセッサを定義する。
76行目: 100行目:
  #endif
  #endif
  </syntaxhighlight>
  </syntaxhighlight>
<br>
<u>※注意</u><br>
<u>ただし、この方法では新しいバージョンが追加されるごとにプリプロセッサを更新する必要がある。</u><br>
<u>より柔軟な方法は、バージョン番号を個別の部分に分割することである。</u><br>
<br><br>
<br><br>


案内メニュー