「Qtの設定 - CMake」の版間の差分

113行目: 113行目:
<br><br>
<br><br>


== CMakeコマンドの停止 ==
== 変数 ==
<code>message</code>関数において、第1引数に<code>FATAL_ERROR</code>を指定することにより、エラーメッセージを出力して停止する。<br>
==== 変数の宣言と代入 ====
変数は、<code>set</code>コマンドを使用して、変数を宣言および代入することができる。<br>
<syntaxhighlight lang="cmake">
set(value 1)  # 値が1の変数valueを宣言
</syntaxhighlight>
<br>
既存の変数への代入も<code>set</code>コマンドを使用する。<br>
変数の値の参照は、入れ子にすることもできる。<br>
<syntaxhighlight lang="cmake">
set(value 1)  # 値が1の変数valueを生成
set(value 2)  # 既存の変数valueに値1を代入
set(value_name value)  # 変数value_nameに変数valueの値を代入
message(${${value_name}}) # ${value_name}が展開されて、${${value_name}}が${value}になり、これが展開されて2になる
</syntaxhighlight>
<br>
<syntaxhighlight lang="cmake">
set(USE_CCACHE OFF CACHE BOOL "")
</syntaxhighlight>
<br>
==== 変数の削除 ====
変数の削除する場合は、<code>unset</code>コマンドを使用する。<br>
<syntaxhighlight lang="cmake">
set(value 1)  # 変数valueを宣言
unset(value)  # 変数valueを削除
</syntaxhighlight>
<br>
==== 定義された全ての変数を出力 ====
<syntaxhighlight lang="cmake">
get_cmake_property(variableNames VARIABLES)
foreach(variableName ${variableNames})
    message(STATUS "${variableName}=${${variableName}}")
endforeach()
</syntaxhighlight>
<br><br>
 
== ログメッセージの出力 ==
==== messageコマンドとは ====
<syntaxhighlight lang="cmake">
message([<mode>] "message to display" ...)
</syntaxhighlight>
<br>
下表に、<code><mode></code>に指定できる項目を示す。(一部)<br>
<center>
{| class="wikitable" | style="background-color:#fefefe;text-align: center;"
|-
! style="background-color:#66CCFF;width: 20%;" | modeの種類
! style="background-color:#66CCFF;width: 30%;" | 説明
! style="background-color:#66CCFF;width: 30%;" | 処理の継続
! style="background-color:#66CCFF;width: 20%;" | 出力先
|-
| 省略する場合 || 重要な情報 || CMakeの処理を継続する || STDERR
|-
| STATUS || 情報 || CMakeの処理を継続する || STDOUT
|-
| WARNING || 警告 || CMakeの処理を継続する || STDERR
|-
| SEND_ERROR || エラー || CMakeの処理を継続する || STDERR
|-
| FATAL_ERROR || 致命的なエラー || CMakeの処理を終了する || STDERR
|}
</center>
<br>
以下の例では、<code>message</code>コマンドにおいて、第1引数に<code>FATAL_ERROR</code>を指定することにより、エラーメッセージを出力して、CMakeコマンドを終了している。<br>
  <syntaxhighlight lang="cmake">
  <syntaxhighlight lang="cmake">
  message(FATAL_ERROR "cmake to terminate.")
  message(FATAL_ERROR "cmake to terminate.")
  </syntaxhighlight>
  </syntaxhighlight>
<br>
<br>
また、<code>message</code>関数において、第1引数に<code>SEND_ERROR</code>を指定することにより、エラーメッセージを出力して動作を継続する。<br>
また、<code>message</code>コマンドにおいて、第1引数に<code>SEND_ERROR</code>を指定することにより、エラーメッセージを出力して動作を継続する。<br>
  <syntaxhighlight lang="cmake">
  <syntaxhighlight lang="cmake">
  message(SEND_ERROR "Continue cmake.")
  message(SEND_ERROR "Continue cmake.")
  </syntaxhighlight>
  </syntaxhighlight>
<br>
<br>
以下の例では、Linux以外のOSの場合は、エラーメッセージを出力して、<code>cmake</code>コマンドを停止している。<br>
以下の例では、Linux以外のOSの場合は、エラーメッセージを出力して、<code>cmake</code>コマンドを終了している。<br>
  <syntaxhighlight lang="cmake">
  <syntaxhighlight lang="cmake">
  if(NOT (UNIX AND NOT APPLE))
  if(NOT (UNIX AND NOT APPLE))