web-dev-qa-db-ja.com

CMake変数の「オプション」と「CACHE BOOLの設定」の違いは何ですか?

次の2つの間に違いはありますか?

set(FOO true CACHE BOOL "description")

option(FOO "description" ON)

ドキュメント: set - option

背景:CMakeをしばらく使用していたとしても、今日はoptionコマンドにしか気づかなかったため、常にsetを使用していました。最初と2番目。

36
Antonio

あなたの例では、違いはありません。ただし、違いがある場合があります。

  • Optionのデフォルト値はOFFです。
  • CMakeDependentOption を使用すると、オプションを他のオプションに依存させることができます
  • Setは、BOOL以外のタイプ、特に ;-lists を受け入れます。

また、オプションを使用すると、ユーザーに安全に設定できることを示します。外部から内部変数を設定すると、無効な値でスクリプトが微妙に破損する場合があります。

27
usr1234567