12,982
回編集
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> | ||