私は正式にOFFに設定されたオプションを上書きしたいと思います。私はちょうど私の好奇心のためになぜCMakeオプションを無効にするにはFORCEが必要ですか?
SET(USE_OPTION ON CACHE BOOL "Override option" FORCE)
を使用しています:なぜ私はdocsから 'FORCE'(それなしで、セットは、()は動作しません)
私は正式にOFFに設定されたオプションを上書きしたいと思います。私はちょうど私の好奇心のためになぜCMakeオプションを無効にするにはFORCEが必要ですか?
SET(USE_OPTION ON CACHE BOOL "Override option" FORCE)
を使用しています:なぜ私はdocsから 'FORCE'(それなしで、セットは、()は動作しません)
が必要なのか:
CACHE場合存在している場合は、キャッシュに既に入れられている場合は、 がキャッシュに入れられます。
前のオプションも0123と仮定します。
FORCEが指定されている場合は、変数がキャッシュにすでに存在する場合は、キャッシュ変数の値が に設定されます。
FORCE
を指定しないと、上記のようにキャッシュに追加されません。
オプションは、設定ステップの後とccmake
、cmake-gui
状又は-D
コマンドラインスイッチを介してツールを使用して、実際のビルド的環境の世代の前にユーザーによって変更することを意味する変数です。
これが最初の場所にキャッシュされている理由です。ユーザーが行った選択は永続化する必要があります。だから、
option(USE_OPTION "My option" ON)
が
set(USE_OPTION ON CACHE BOOL "My option")
に相当しますので、変更したりFORCE
にそれをあなたが持っている「ユーザー定義可能な値」/キャッシュされた変数を強制的に。
または非キャッシュされた変数と、現在の変数のスコープのためにそれを上書きする/隠す:
set(USE_OPTION ON)
リファレンス